我想将错误重定向到特定页面,因此我写道:
ErrorDocument 403 /error403.html
这是有效的,但是在 HTTP 响应标头中我仍然可以看到HTTP/1.1 403 Forbidden
。
一些浏览器(例如 IE)看到该消息后,会忽略响应中的 HTML 代码error403.html
,并显示自己的页面。
有什么方法可以告诉服务器,如果ErrorDocument
处理错误,它将不会包含 HTTP 错误标头?
答案1
Internet Explorer 很傻,显示它自己的自定义错误页面,而不是你的,如果您的错误页面小于 512 字节后压缩. 使您的错误页面至少有 512 字节(如果您没有那么多话要说,也许可以添加一个长的 HTML 注释)。
答案2
不要这样做。这会破坏 HTTP 协议。互联网建立在这样的假设之上:服务器会给出正确的错误消息,而客户端会正确处理这些错误消息。
在这种情况下,如果你真的想让它在 IE 上看起来更好,那么使用mod_rewrite
为 IE 创建一个例外。mod_rewrite 的基本速成课程可在此处找到典型的 mod_rewrite 问题。在这种情况下,您需要RewriteCond
仅当 User-Agent 字符串与 IE 匹配时才触发。