带有重写的ErrorDocument仍然可以获得Referer

时间:2012-02-02 08:26:51

标签: php .htaccess error-handling

我基本上想要做的是将任何404请求重定向到/404/,但之后我想让它“拉”'将页面保留为index.php?error=404,同时将URL保留为/404/ - 然后我可以使用PHP获取引用(使用$ _SERVER [' HTTP_REFERER']`)。

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

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

我知道我可能在上面做了一些有趣的错误,因为404页面/ $ _ SERVER没有得到引用URL(可能是因为ErrorDocument)。

index.php页面获取通过它路由的所有内容(非常标准,我收集)并且发送执行标头重定向到/ 404 / if / when找不到页面/文件。虽然如果有人要错误地将URL输入浏览器,我想获得原始请求,但是因为页面正在被重定向,那么它是否仍然是PHP中的引用者?

1 个答案:

答案 0 :(得分:0)

我建议您直接使用error.php文件来执行此操作:

ErrorDocument 404 error.php

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

这样做可以提供更好的控制级别,您可以更轻松地处理服务器差异,以防您需要将应用程序从一台服务器迁移到另一台服务器。