我自己写了一个自定义的404页面,但是我注意到,当我返回状态代码404时,该页面没有得到GZIPed。即使我确定它应该是。
(我正在将所有请求重定向到index.php,然后解析URI,并在需要时通过header()发出404,所以我没有使用ErrorDocument,虽然我已经使用ErrorDocument进行了测试并且发生了同样的问题。)
有谁知道这是否是一个已知的'功能',PHP / Apache中的错误或我自己的代码?
我正在使用PHP5.5.9 / Apach2.4.7在Ubuntu上,Apache配置为使用mod_deflate。
这是一个简单的测试脚本:
<?php
header("HTTP/1.1 404 Not found");
print "WILL THIS BE GZIPED! ".str_repeat('X',500);
?>
如果您注释掉标题404(以便它获得正常的200响应),则会返回压缩的页面。
我也尝试过使用PHP {gt> = 5.4的新http_response_code(404);
命令,但这没有帮助。
我已经在Chrome /开发者工具中进行了测试,并且还直接使用Curl来测试它是否被压缩,但事实并非如此。没有响应标头'Content-Encoding:gzip',所以我猜它的Apache没有压缩它。
对我而言,这不是一个主要问题,因为我希望不要让太多人试图链接到产生404错误的页面,但如果它确实正确压缩会很好。
我想我可以在PHP中自己进行压缩,但是想看看它是不是一个bug或者我先做错了什么。
(注意,你必须确保响应是> 256个字节才能让Apache进行压缩,这就是str_repeat
位是什么)