【问题标题】:how to log which page was "not found"? (Trying custom error page with htaccess, php, http_referer)如何记录“未找到”哪个页面? (尝试使用 htaccess、php、http_referer 自定义错误页面)
【发布时间】:2010-11-06 16:10:41
【问题描述】:

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

使用以下 .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_REFERER 为 A.php .. 但我在寻找什么是“有人试图查看 B.php”。我该怎么做?

感谢您的帮助。

编辑

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

【问题讨论】:

    标签: php .htaccess http-referer


    【解决方案1】:

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

    ErrorDocument 404 /my_404.php
    

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

    【讨论】:

      【解决方案2】:

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

      Stackoverflow 档案:

      其他相关内容:

      【讨论】:

      • 我不想检查日志文件。我只想在 404 页面上查看它。我不想记录两次数据。
      【解决方案3】:

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

      您可以看到其他“$_SERVER”变量here 的列表。

      编辑:

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

      ErrorDocument 404 /www/my_404.php 
      

      执行此操作后,$_SERVER['REQUEST_URI'] 应该保持正确的值。

      【讨论】:

      • @Matt .. 是的,它现在工作得很好。谢谢你帮助我。 @steef 也回答了同样的问题。所以我应该标记为答案!
      【解决方案4】:

      查看my_404.php 中的$_SERVER 数组

      var_dump($_SERVER);
      

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

      【讨论】:

      • 完成了。没什么帮助。我的意思是,提到,b.php。
      • 如果您尝试“ErrorDocument 404 /my_404.php”(没有主机)怎么办?
      猜你喜欢
      • 2018-04-18
      • 2013-05-18
      • 1970-01-01
      • 1970-01-01
      • 2019-11-28
      • 1970-01-01
      • 2011-03-25
      • 2021-12-20
      • 2020-07-18
      相关资源
      最近更新 更多