2

我只是想知道如何获取在我的网站上找不到的网页链接。

使用以下 .htaccess 代码,当请求一个不存在的页面时,用户被重定向到 my_404.php。

Options -Indexes

ErrorDocument 404 http://mysite.com/my_404.php

如果我必须追踪页面的链接是什么,但没有找到,我该怎么做?

例如,A.php 是一个有效的网页,而 b.php 不是。因此,如果我在 A.php 上并尝试查看 b.php(不存在的页面)..htaccess 会将我重定向到 my_404.php,我在其中看到HTTP_REFERERA.php .. 但我正在寻找的是“有人试图查看 B.php”。我怎么做?

谢谢你的帮助。

编辑

请参阅:我不想签入日志文件。我在页面上询问一些事情。谢谢。

4

4 回答 4

2

这可能已经在您的 Apache 日志文件中完成。您可以只解析数据而不是记录两次。

堆栈溢出档案:

其他相关内容:

于 2009-06-29T12:03:26.823 回答
2

您要查找的变量称为 $_SERVER['REQUEST_URI']。它保存客户端向您的服务器发出的原始请求。

您可以在此处查看其他“$_SERVER”变量的列表。

编辑:

经过一番谷歌搜索,您的问题是您的错误页面是使用 http:// 限定符指定的。更改您的 htaccess 以便将 ErrorDocument 指定为本地文件,例如:

ErrorDocument 404 /www/my_404.php 

在你这样做之后, $_SERVER['REQUEST_URI'] 应该保持正确的值。

于 2009-06-29T12:05:22.497 回答
2

当您使用远程 ErrorDocument URLhttp://mysite.com/my_404.php时,Apache 会将该 URL 的重定向发送到客户端,这就是为什么您无法$_SERVER['REQUEST_URI']像 Matt Bridges 建议的那样获取导致 404 的 URL。您可能想尝试使用本地 ErrorDocument(无方案和服务器名称),如下所示:

ErrorDocument 404 /my_404.php

我怀疑$_SERVER['REQUEST_URI']然后会返回最初请求的 URL。

于 2009-06-29T12:25:42.207 回答
0

看看你的$_SERVER数组my_404.php

var_dump($_SERVER);

我想你会找到你需要的。:-)

于 2009-06-29T12:02:44.407 回答