我想在404页面上输出用户试图使用的url,该url导致了404页面


i want to output on 404 page the url the user was trying to use that resulted in the 404 page

我正在尝试创建一个自定义404页面,以包含以下信息:

抱歉,找不到此页面

您试图查看的页面是:

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

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

工作.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]

它现在工作了,感谢所有帮助我的人

您想要使用$_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将向客户端发送重定向,告诉它在哪里可以找到该文档,即使该文档最终位于同一服务器上。这有几个含义,最重要的是客户端不会收到原始错误状态代码,而是会收到重定向状态代码。这反过来会混淆网络机器人和其他客户端,它们试图使用状态码来确定URL是否有效。此外,如果您在ErrorDocument 401中使用远程URL,客户端将不知道提示用户输入密码,因为它不会收到401状态代码。因此,如果使用ErrorDocument 401指令,则它必须引用本地文档。