应用 htaccess 重定向时,压缩 (gzip) 不起作用

Compression (gzip) is not working when an htaccess redirect is applied

我有一个 Linux 网络服务器 运行 WHM/cPanel。

在 /public_html 文件夹中上传了一个名为 compression.php 的页面 这是通过 http://www.example.com/compression.php

访问的

在 cPanel 中,在 'Optimize Website' 中,选择了 'Compress All Content' 选项并且 .htaccess 文件确实有一个 mod_gzip 块 - 请参阅下面:

<ifModule mod_gzip.c>
    mod_gzip_on Yes
    mod_gzip_dechunk Yes
    mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
    mod_gzip_item_include handler ^cgi-script$
    mod_gzip_item_include mime ^text/.*
    mod_gzip_item_include mime ^application/x-javascript.*
    mod_gzip_item_exclude mime ^image/.*
    mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

使用 https://www.whatsmyip.org/http-compression-test/ 进行测试,我可以看到页面正在按预期压缩。

有一个 /public_html/public 文件夹,其中还有一个名为 compression.php 的文件(为了区分它,内容略有不同)。当我使用 http://www.example.com/public/compression.php 访问它时,页面也被压缩了。

但是,如果我想将所有流量重定向到 .htaccess 文件中的 /public_html/public 文件夹,我添加以下内容:

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On

    # Rewrite to 'public' folder
    RewriteCond %{HTTP_HOST} ^dev43.360ss.com$
    RewriteCond %{REQUEST_URI} !public/
    RewriteRule (.*) public/ [L]
</IfModule>

/public 中的页面在 http://www.example.com/compression.php URL 上加载并显示正确的内容,但不再压缩。

根据 cPanel 支持的建议,我尝试在 htaccess 中将 mod_gzip 块置于 mod_rewrite 块之上。

因为它是在没有 htaccess 重定向的情况下进行压缩的,所以我们知道 gzip 已安装并且可以正常工作。 而且我已经测试过,无论使用什么版本的 PHP,都会发生同样的情况(我已经测试过 7.1、7.2 和 7.3)。 我还测试了 php 个文件和一个图像文件 - 没有区别。

有没有人有什么想法?

谢谢

事实证明,这是 ModSecurity™ 配置中的 'Backend Compression' 设置设置为禁用而不是启用!