2013-03-25 70 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