ErrorDocument with Rewrite and still get Referer


ErrorDocument with Rewrite and still get Referer

我基本上想做的是将任何404请求重定向到/404/,但我希望它将页面"拉"到index.php?error=404,同时将URL保留为/404/,然后我可以使用PHP(使用$_SERVER['HTTP_referer']`)获得referer。

我认为ReWrite规则应该先于ErrorDocuments,所以我的.htaccess文件如下所示:

RewriteRule ^404/$ /index.php?error=404
ErrorDocument 404 /404/

我知道我可能在上面做了一些根本错误的事情,因为404页面/$_SERVER没有得到referer URL(可能是因为ErrorDocument)。

index.php页面获取通过它路由的所有内容(我收集了一些非常标准的内容),并在找不到页面/文件时发送一个头重定向到/404/if/。虽然如果有人在浏览器中错误地输入了URL,我希望得到原始请求,但由于页面无论如何都在重定向,那应该仍然是PHP中的referer吗?

我建议您直接使用error.php文件进行不同的操作:

ErrorDocument 404 error.php

然后,您可以使用该文件作为代理,将所有需要的信息注入index.php。如果您需要查找apache状态代码(以及其他有用信息),请查看$_SERVER超全局数组。

这样做可以提供更好的控制级别,并且在需要将应用程序从一台服务器迁移到另一台服务器时,可以更容易地处理服务器差异。