【发布时间】:2023-06-25 21:58:01
【问题描述】:
我在 htaccess 文件上使用以下俏皮话在 GoDaddy 服务器上启用压缩;
####################
# GZIP COMPRESSION #
####################
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-javascript application/x-httpd-php
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip
这是我很久以前从 * 上的另一个问题中得到的一句俏皮话。直到最近,这一切都很好。现在它只是拒绝工作,尽管在 WHM 上启用了 mod_deflate,但像 https://checkgzipcompression.com/ 这样的网站会告诉我该网站没有被压缩。除非我在 PHP 中使用 ob_gzhandler,否则我无法在此服务器上启用压缩,如下所示;
if(!ob_start("ob_gzhandler")) ob_start();
这不是最佳解决方案。
我有一个 VPS,我在上面安装了一个非常相似的 apache/php,它托管在 GoDaddy 服务器上托管的相同版本的网站,具有完全相同的文件,包括带有 gzip 压缩的 htaccess,以及它不需要 ob_gzhandler 就可以工作。
我曾尝试联系 GoDaddy,但他们告诉我“验证 htaccess”而不是做任何事情,但他们一直没有帮助,我已经考虑将我的整个安装迁移到另一个服务提供商。
还有什么需要我验证的吗?
【问题讨论】:
-
你有 shell 访问权限吗?
apache2ctl -M是否显示 mod_deflate? -
恐怕我没有 shell 访问权限。 WHM 中的 EasyApache4 显示 mod_deflate 已启用。
-
注释掉
BrowserMatch和SetEnvIfNoCase部分是否有效?我看到很多“no-gzip”选项...可能会尝试排除某些匹配项。 -
不,我已经删除了除了 SetOutputFilter DEFLATE 和 AddOutputFilterByType(其余的在这里)之外的所有内容,但它仍然不起作用。
-
我设法获得了 root shell 访问权限,虽然 apache2ctl 不起作用,但我使用了 apachectl -M。 deflate_module 是加载的模块之一,尽管它被指定为“共享”而不是静态的。
标签: php apache .htaccess whm mod-deflate