404自定义错误页面重定向不显示丢失的文件URL

时间:2011-09-15 06:37:58

标签: php url redirect http-status-code-404 custom-error-pages

我的网站上有一个自定义404错误页面,但在网站上做其他事情时,错误页面很难弄清楚我丢失的文件问题是什么,因为它重定向到给定的html或php文件并且需要丢失文件的URL在地址栏之外,并将其替换为自定义错误页面的URL。

因此,例如,当用户登录该站点时,我将它链接到一个php文件,当他们点击提交,但然后浏览器将他们直接带到404错误页面,所以我看不出问题实际上是一个目录高于应该的目录的链接。

我尝试使用php将丢失文件的URL打印到页面,但服务器只抓取404错误页面的URL,而不是原始丢失的文件URL。我试图这样做:http://members.cox.net/midian/tutorials/php404.htm

如何在地址栏中保留原始缺失的网址时显示自定义错误页面,或者将丢失文件的网址打印到页面?

2 个答案:

答案 0 :(得分:5)

如果您的错误页面重定向到PHP支持的404页面,则变量$_SERVER["HTTP_REFERER"]应包含一些有趣的内容。话虽如此,重定向到错误404页面是一个不好的做法。它使搜索引擎和人类访问者都感到困惑。

修改

这是一个适用于Apache的解决方案。将此行添加到.htaccess文件中:

ErrorDocument 404 /error-404.php

在您网站的根目录中创建一个名为error-404.php的文件,其中包含以下内容:

<?php
echo "<h1>404 Not Found</h1>";
echo "<p>The page {$_SERVER['REQUEST_URI']} was not found on this server</p>";

screenshot of the error page with firebug

答案 1 :(得分:2)

Salman A发布的内容适用于我。

只有当我在.htaccess文件中使用相对路径时才能使用它:

ErrorDocument 404 /error-404.php

ErrorDocument 404 http://www.mydomain.com/error-404.php

第二个版本在地址栏和页面正文中为我提供了重定向的网址。

此外,您不需要为404消息使用php页面;如果您不想回显页面正文中的URL,则html页面也可以正常工作。