我正在尝试创建自定义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]
现在正在工作,感谢所有帮助过我的人
答案 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指令,那么它必须引用本地文档。