我所要做的就是:
诀窍是那些文件位于我反向代理的远程(公共)服务器上。 我这样做是因为我可以使用我们的javascript解决同源问题,并加快交付速度。 .gz文件已存在。 无论我做什么,我都不能请求.js文件并返回.gz文件。 我试过这个与许多不同的RewriteConds无济于事。 我也尝试使用RequestHeader取消设置启用Accept-Encoding,并注释掉了。 Google PageSpeed一直告诉我它没有收到压缩版本,当我请求使用curl并手动设置“Accept-Encoding:gzip,deflate”标头时,我继续收到非压缩版本。我不能将重写放在.htaccess文件中,因为反向代理在.htaccess之前处理,并且我需要在反向代理发生时重写已经生效。我完全失去了。
这是我的非生产设置(我知道它需要保护):
<VirtualHost *:80>
ServerName ww.test.com
DocumentRoot "/htdocs/public"
Options +MultiViews
AddEncoding x-gzip .gz
AddEncoding gzip .gz
RewriteEngine on
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteRule ^\.js$ $1\.js\.gz [L]
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteRule ^\.css$ $1\.css\.gz [L]
<FilesMatch .*\.css\.gz>
ForceType text/css
Header append Content-Encoding gzip
</FilesMatch>
<FilesMatch .*\.js\.gz>
ForceType text/javascript
Header append Content-Encoding gzip
</FilesMatch>
ProxyRequests off
ProxyPass /static/ http://www.ourCDN.com/ourAccount/environmentName/
<Location /static/>
ProxyPassReverse /
#RequestHeader unset Accept-Encoding
</Location>
<Directory />
Options FollowSymLinks
AllowOverride All
Order deny,allow
</Directory>
</VirtualHost>
答案 0 :(得分:1)
FilesMatch
规则仅适用于磁盘上的文件 - 代理请求不是磁盘上的文件,因此不会被FilesMatch
规则捕获。
你可能想要
<LocationMatch "^/static/.*\.css\.gz$">
ProxyPassReverse /
....
</LocationMatch>