将错误 400 错误请求重定向到自定义页面的问题

Pau*_*aul 4 .htaccess errordocument apache-2.2

我已将我的.htaccess文件编辑为以下内容:

ErrorDocument 404 /index.php?page=page-not-found
ErrorDocument 400 /index.php?page=bad-request
Run Code Online (Sandbox Code Playgroud)

现在错误 404 正确重定向,但是如果我输入一个地址,例如http://example.com/%22%%5E$%%5E&%C2%A3&服务器不会重定向 400 错误,而是显示默认的 apache 消息。我究竟做错了什么?

小智 6

来自Apache 文档的引用:

尽管可以覆盖大多数错误消息,但在某些情况下,无论 ErrorDocument 的设置如何,都会使用内部消息。特别是,如果检测到格式错误的请求,将立即停止正常的请求处理并返回内部错误消息。这对于防止由错误请求引起的安全问题是必要的。

所以,如果你想重定向错误 400,你应该ErrorDocumenthttpd.confApache 配置文件中取消注释指令,如下所示:

# Some examples:
#ErrorDocument 500 http://foo.example.com/cgi-bin/tester
ErrorDocument 400 /cgi-bin/bad_request.pl
#ErrorDocument 401 /subscription_info.html
#ErrorDocument 403 "Sorry can't allow you access today" 
Run Code Online (Sandbox Code Playgroud)

并重新启动Apache服务器。