【问题标题】:Mod_Deflate and GoDaddy issuesMod_Deflate 和 GoDaddy 问题
【发布时间】: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 已启用。
  • 注释掉BrowserMatchSetEnvIfNoCase 部分是否有效?我看到很多“no-gzip”选项...可能会尝试排除某些匹配项。
  • 不,我已经删除了除了 SetOutputFilter DEFLATE 和 AddOutputFilterByType(其余的在这里)之外的所有内容,但它仍然不起作用。
  • 我设法获得了 root shell 访问权限,虽然 apache2ctl 不起作用,但我使用了 apachectl -M。 deflate_module 是加载的模块之一,尽管它被指定为“共享”而不是静态的。

标签: php apache .htaccess whm mod-deflate


【解决方案1】:

登录WHM -> Account Information ->List Accounts。单击该帐户的 CP 图标(具有所需网站的那个)。在 cPanel 中搜索 优化网站

默认情况下禁用 Gzip 压缩。

为所有内容或仅针对特定内容启用它。然后在 https://checkgzipcompression.com/ 上重新检查您的网站,它应该会显示 gzip 压缩已启用。

然后您可以为 mod_deflate 使用所需的 htaccess 规则。

【讨论】: