【问题标题】:GZIP only compresses files when full file path specified - won't compress rootGZIP 仅在指定完整文件路径时压缩文件 - 不会压缩根目录
【发布时间】:2020-09-28 20:35:16
【问题描述】:

如果我在 .htaccess 中包含以下内容,GZIP 将仅在指定文件的完整路径时压缩文件:

RewriteRule ^ index.php [L]

但上述重写对于让我的 CMS 正常运行是必要的。

例如:

https://karenkingston.co.uk 未压缩,但 https://karenkingston.co.uk/index.php 已压缩,而且确实 https://karenkingston.co.uk/themes/coach/js/jquery.scripts.js 也可压缩。

PHP 7.2 但更改版本无济于事。从 .htaccess 与 CPanel 启用 GZIP 也无济于事。

这是完整的 .htaccess

Options -indexes

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=302,L,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

AddType application/vnd.ms-fontobject .eot 
AddType application/x-font-ttf .ttf
AddType application/x-font-opentype .otf
AddType application/x-font-woff .woff
AddType application/x-font-woff2 .woff2
AddType image/svg+xml .svg

ExpiresActive on
ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
ExpiresByType application/x-font-ttf "access plus 1 year"
ExpiresByType application/x-font-opentype "access plus 1 year"
ExpiresByType application/x-font-woff "access plus 1 year"
ExpiresByType application/x-font-woff2 "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/css "access plus 1 year"
ExpiresByType text/html "access plus 1 month"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType text/x-javascript "access plus 1 year"
ExpiresByType application/pdf "access plus 1 year"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresDefault "access plus 1 month"

ErrorDocument 404 /

Redirect 301 /home https://karenkingston.co.uk
Redirect 301 /search https://karenkingston.co.uk

有什么想法吗?

【问题讨论】:

  • 您在哪里/如何实施 GZIP 压缩?您发布的.htaccess 代码不包含此类指令?您使用的是什么版本的 Apache? PHP是如何安装的?
  • 我仍在努力解决这个问题 - GZIP 在 CPanel 中启用,并且在我上面概述的情况之外正常工作,它不会压缩文件夹根目录的任何内容。

标签: php .htaccess mod-rewrite gzip mod-deflate


【解决方案1】:

上面的代码不支持 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>

【讨论】:

  • GZIP 在 CPanel 中启用,并且在指定完整路径的情况下工作正常,但不是在根目录下。
  • @ColossalYouth mod_gzip.c auto 采用 GZIP 其 Apache 自动配置的路径
【解决方案2】:

在您的 .htaccess 文件中执行此操作

# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xmlin
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
# Or, compress certain file types by extension:
<files *.html>
SetOutputFilter DEFLATE
</files>

然后在你的 php 中

<?php
   if (substr_count($_SERVER[‘HTTP_ACCEPT_ENCODING’], ‘gzip’))
   ob_start(“ob_gzhandler”);
   else ob_start();
?>

将上述 php 代码写入一个始终处于活动状态的文件中,例如您的配置文件或 index.php 文件

【讨论】:

    猜你喜欢
    • 2011-12-12
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多