【问题标题】:Capturing and logging broken links on a custom 404 page在自定义 404 页面上捕获和记录损坏的链接
【发布时间】:2014-01-09 16:30:56
【问题描述】:

我正在尝试在 php 中创建一个客户 404 页面,该页面捕获并可以登录到数据库中请求的页面。我的 .htaccess 文件中已经有了这个:

错误文档 404 http://mywebsite.com/notfound.php

我想要做的是将请求的 URI 作为查询字符串附加到 URL。我试过这个:

错误文档 404 http://mywebsite.com/notfound.php?url=%{REQUEST_URI}

但是 URL 显示了我在上面输入的文字。所以我想我最后需要某种标志,比如 [QSA] 之类的,但所有尝试都会导致服务器错误 500。

我的最终目标是在 notfound.php 页面上捕获尝试的断开链接和引用 URL(我可以从 $_SERVER['HTTP_REFERER'] 获取)并将其记录到我的数据库中,在那里我可以提取报告所有链接,超链接或通过 AJAX 调用,已损坏或丢失。除了获取导致 404 错误的实际链接的请求 URI 之外,我什么都能做。

【问题讨论】:

    标签: apache .htaccess http-status-code-404


    【解决方案1】:

    您不应在目标中使用 ErrorDocument 404http:// 以避免完全重定向,如下所示:

    ErrorDocument 404 /devsite/notfound.php
    

    然后您可以使用原始 404 URI $_SERVER["REQUEST_URI"]

    【讨论】:

    • 不确定我是否遵循...如果我将“ErrorDocument 404 /notfound.php”放入 .htaccess 文件中,我会在该请求中收到 404。将“ErrorDocument 404 mywebsite.com/notfound.php”放入 .htaccess 中有效,但 $_SERVER["REQUEST_URI"] = /mywebsite/notfound.php。我目前正在 localhost 中开发,不确定这是否会有所不同。我实际的 ErrorDocument 语句是:ErrorDocument 404 localhost/devsite/notfound.php 将在上线时更改为服务器。
    • 您需要提供 DocumentRoot 的完整路径。所以你需要使用:ErrorDocument 404 /devsite/notfound.php
    • aahhh,我知道这是我忽略的东西。应该知道得更好(掌心)。谢谢!!
    猜你喜欢
    • 1970-01-01
    • 2015-10-23
    • 2013-10-27
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多