我无法使用Apache(2.4)的重写规则来提供压缩文件。
我的javascript捆绑过程为它创建的每个.js生成.gz文件。我已经在apache a2enmod rewrite
上激活了重写模块,并将.htacess
文件设置为:
AddEncoding gzip .gz
RewriteEngine on
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule "^(.*)\.js" "$1\.js\.gz" [QSA]
# Serve correct content types, and prevent mod_deflate double gzip.
RewriteRule "\.js\.gz$" "-" [T=text/javascript,E=no-gzip:1]
<FilesMatch ".+\.(js\.gz)$">
Header append Content-Encoding gzip
Header append worked yes
</FilesMatch>
我正在运行的问题是:
RewriteCond %{HTTP:Accept-encoding} gzip
永远不会评估为true。在Chrome开发者工具上,客户端正在发送此标头Accept-Encoding:gzip, deflate, br
(我已尝试将gzip,deflate,br添加到条件但不起作用); Content-Encoding
; Content-length
。但它以Transfer-Encoding:chunked
回应我觉得很奇怪; 这些是在我的apache上启用的模块(我认为它们在我的ubuntu dist中默认启用,因为我没有激活任何这些模块)
access_compat.load authz_user.load filter.load rewrite.load
alias.conf autoindex.conf headers.load setenvif.conf
alias.load autoindex.load mime.conf setenvif.load
auth_basic.load deflate.conf mime.load status.conf
authn_core.load deflate.load mpm_event.conf status.load
authn_file.load dir.conf mpm_event.load
authz_core.load dir.load negotiation.conf
authz_host.load env.load negotiation.load
答案 0 :(得分:0)
你在那里的代码看起来是正确的,似乎在我的电脑上工作正常,这表明问题出在其他地方。我能想到的一些可能性:
LoadModule
行注释掉它吗?.htaccess
文件也使用重写规则,则父目录中的重写规则将不会运行。 (如果这是问题,RewriteOptions Inherit
应该使用这些特定规则。但是,这不能解释分块编码。)