我在我的JavaScript / CSS上使用缓存清除查询字符串,只是想知道我如何重写它以使其成为文件名的一部分呢?
我想重写:website.com/js/m/file.min.js?params到website.com/js/m/file.min.params.js。
<IfModule mod_rewrite.c>
# Domain Redirects
RewriteEngine On
RewriteBase /
RewriteRule ^/js/m/([a-zA-Z.]+).min.[0-9]+.js$ /js/m/$1.min.js [L]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
#If we're here, redirect through zend:
RewriteRule ^.*$ index.php [NC,L]
</IfModule>
答案 0 :(得分:1)
首先,您的此规则不正确,无效:
RewriteRule ^/js/m/([a-zA-Z.]+).min.[0-9]+.js$ /js/m/$1.min.js [L]
原因: RewriteRule匹配没有前导斜杠的URI。
现在你的任务:
我想改写:website.com/js/m/file.min.js?params to 取而代之的是site.com/js/m/file.min.params.js。
可以通过此规则处理:
# redirect from /js/m/file.min.js?params to /js/m/file.min.params.js
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(js/m/.+?)\.js\?([^\s&]+) [NC]
RewriteRule ^ /%1.%2.js? [R=301,L]
# forward from /js/m/file.min.params.js to /js/m/file.min.js?params
RewriteRule ^(js/m/.+?\.min)\.([^.]+)\.js$ $1.js?$2 [L,QSA,NC]