我想在404页面上输出用户尝试使用的url导致404页面

时间:2013-08-11 00:32:24

标签: php .htaccess http-referer custom-error-pages url-redirection

我正在尝试创建自定义404页面以包含此信息:

  

抱歉,找不到此页面

     

您要查看的页面是:

     

请检查网址拼写是否正确,如果是,则此页面可能   已被移动,删除或从未存在

我尝试使用:$_SERVER['HTTP_REFERER']来捕获用户在自动重定向到404页面之前尝试查看的网址

工作.htaccess代码

Options -MultiViews
RewriteEngine On

ErrorDocument 500 /500.php
ErrorDocument 404 /404.php

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !\.php$
RewriteRule ^(.*)$ $1.php [L,QSA]

现在正在工作,感谢所有帮助过我的人

1 个答案:

答案 0 :(得分:1)

您想使用$_SERVER['REQUEST_URI'],它会为您提供访问当前页面的URI。结果采用格式/request_uri.php。有关详细信息,请参阅http://php.net/manual/en/reserved.variables.server.php

404.php中,您可以执行以下操作:

The page you were trying to view was: <?php echo $_SERVER['REQUEST_URI']; ?>

<强>更新

更新您的ErrorDocument声明,如下所示:

# Remove http://www.example.com
ErrorDocument 404 /404.php 

来自文档(http://httpd.apache.org/docs/2.2/mod/core.html#errordocument

  

请注意,当您指定一个指向远程URL的ErrorDocument(即任何方法,例如前面带有http的方法)时,Apache会向客户端发送重定向,告诉它在哪里找到该文档,甚至如果文档最终在同一台服务器上。这有几个含义,最重要的是客户端不会收到原始错误状态代码,而是会收到重定向状态代码。这反过来可能会混淆Web机器人和其他客户端,这些客户端尝试使用状态代码确定URL是否有效。此外,如果您在ErrorDocument 401中使用远程URL,则客户端将不知道提示用户输入密码,因为它不会收到401状态代码。因此,如果您使用ErrorDocument 401指令,那么它必须引用本地文档。