2013-03-25 75 views
1

我在我的Javscript/CSS上使用缓存破解查询字符串,只是想知道如何重写,所以它的文件名的一部分,而不是?RewriteRule JS缓存破坏

我想改写: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> 

回答

1

首先是不正确的,将无法正常工作:

RewriteRule ^/js/m/([a-zA-Z.]+).min.[0-9]+.js$ /js/m/$1.min.js [L] 

原因:重写规则匹配的URI没有斜线。

现在你的任务:

我想重写:website.com/js/m/file.min.js?params到 website.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] 
+0

感谢您的答复!我在'RewriteBase /'之后添加了代码,并将其重定向到'js/m/scripts.async.min.1363759402.js',但它仍然会通过index.php重定向到最后一个RewriteRule,就好像它不是''在'RewriteRule ^(js/m/[^。] + \。min)\。([^。] +)\。js $ $ 1.js?$ 2 [L,QSA,NC]'上不匹配。 I.E.我期望'js/m/scripts.async.min.1363759402.js'加载'js/m/scripts.async.min.js?1363759402'的内容,但它不是? – Benno 2013-03-25 04:08:54

+0

立即尝试编辑后的版本。 – anubhava 2013-03-25 04:17:37

+0

太棒了,明白了!谢谢!! – Benno 2013-03-25 04:44:50