带有 mod_deflate 的 Apache 甚至会(毫无用处地)压缩空的(PHP 生成的)302 重定向响应,添加 20 字节的响应主体。现代浏览器可以接受这种做法,但 IE6 似乎会随机地阻塞这 20 字节。
有没有办法配置 mod_deflate 以忽略空响应(或至少非 200 个响应)?
注意:我知道我可以通过 SetEnvIfNoCase 和 BrowserMatch 禁用 deflate,但我真的很想禁用它,只是因为它做错了:压缩空响应。
答案1
我认为 apache 的 302 响应主体不是空的,而是包含一些有关响应被移动的基本消息。因此,mod_deflate 只是在做它的工作。
使用 telnet 或 netcat 检查——这是一个 netcat 示例:
echo -e "GET / HTTP/1.1\nHost: myhost.com\n\n" | nc myhost.com 80
如果您想改变这种情况,可以使用 ErrorDocument 告诉 apache 为您的自定义文件提供 302 响应。您的文件需要足够智能,能够读取适当的环境变量来执行重定向,但您可以让正文为空 - 或者更好的是设置 mod_deflate 不会匹配的不同 Content-Type 标头。