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

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

我已将.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 服务器。

相关内容