.htaccess将所有错误重定向到具有GET变量的PHP文件


.htaccess Redirecting All Errors to a PHP file with GET variable

我正试图找出如何将所有错误页面重定向到/error.php?e={ERROR HERE}

例如,如果用户遇到404错误,他们将被引导到/error.php?e=404

有可能的方法吗?

您可以使用apache错误文档配置。这是更多信息

http://httpd.apache.org/docs/2.2/custom-error.html

理想情况下,我们只能执行以下操作:

ErrorDocument 404 /error.php?e=404

但是,如果原始URL有一个查询字符串,它将覆盖ErrorDocument中的任何设置(我相信)。解决方案可以是使用ErrorDocumentRewriteRule:的组合

ErrorDocument 404 /404
RewriteRule ^([0-9]+)$ /error.php?e=$1 [L]

ErrorDocument设置为各种错误返回的默认页面。RewriteRule将请求发送到实际的php文件,并在查询字符串中传递数字。

一种更高级的方法是使用Apache为您创建的自定义REDIRECT_变量。请参阅这篇很棒的博客文章,了解更多关于自定义ErrorDocument的环境变量的信息http://www.benhallbenhall.com/2017/01/custom-apache-error-handler-error-url-php/

您可能还想查看自定义错误页上的Apache文档,网址为http://httpd.apache.org/docs/2.2/custom-error.html