我已将.htaccess
文件编辑如下:
ErrorDocument 404 /index.php?page=page-not-found
ErrorDocument 400 /index.php?page=bad-request
现在 404 错误已正确重定向,但如果我输入类似地址,http://example.com/%22%%5E$%%5E&%C2%A3&
服务器不会重定向 400 错误,而是显示默认的 apache 消息。我做错了什么?
答案1
引自Apache 文档:
虽然大多数错误消息都可以被覆盖,但在某些情况下,无论 ErrorDocument 的设置如何,都会使用内部消息。特别是,如果检测到格式错误的请求,则将立即停止正常请求处理并返回内部错误消息。这对于防范由不良请求引起的安全问题是必要的。
因此,如果您想要重定向错误 400,您应该ErrorDocument
在 Apache 配置文件中取消注释指令httpd.conf
,如下所示:
# 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"
并重新启动 Apache 服务器。