我有一个如下所示的mod_substitute,它在curl中工作得非常好,但在浏览器上却不行。 此外,它可以在除一页之外的所有页面上工作。
我想知道什么会导致mod_substitute无法在浏览器上工作? 如何debugging和解决这个问题?
要解决这些问题,最好将浏览器中的头文件与curl中的头文件进行比较( -i ,– --include标志将显示标题, -H标志可以添加它们),并从浏览器中添加一个一个时间来纠缠命令,直到问题再现。
我读了mod_substitute文档页面的评论部分 ,描述了像你所描述的症状, mod_substitute有时不像预期的那样工作:
原来,这是我们的filter链的顺序。 在SUBSTITUTE之前运行DEFLATE。 对于小文件,DEFLATE没有做任何事情,所以它的工作。 在一些没有发送Accept-Encoding头的内部代理服务器上工作。 但是,其他时间没有。 最后,这个效果最好:
AddOutputFilterByType INFLATE;SUBSTITUTE;DEFLATE text/html text/plain text/xml
另一个select是取消设置目标资源的Accept-Encoding标头,其中mod_substitute应该是替代品。
RequestHeader unset Accept-Encoding
不过,使用其他技巧(可以说)更好一些,所以你可以从mod_deflate和mod_substitute获得好处。
禁用gzip压缩解决了这个问题。 将下面的行添加到httpd.conf中SetEnv no-gzip 1解决了这个问题