2013-09-10 37 views
0

這就是我想..htaccess的重寫規則/條件給出文件未找到

RewriteEngine On 
RewriteCond $1 ^(.*)/__ver([0-9]+)__/(.*)$ 
RewriteRule ^(.*)$ /$1 [L] 

什麼我最終要做的是我的版本的文件結構不改變實際的物理目錄結構。我也試圖設置一些有助於防止在某些瀏覽器中緩存的內容。無論哪種方式,我基於這種邏輯試圖從codeigniter的URL中刪除index.php,但沒有成功。

我希望能夠在我的HTML提供的src=""一個URI像

http://example.com/__ver333__/js/script.js 
http://example.com/__ver333__/script.js 
http://example.com/__ver333__/js/dir/script.js 

or 

__ver333__/js/script.js 
__ver333__/script.js 
__ver333__/js/dir/script.js 

但至於服務器行爲或關注我希望它刪除ver333拉文件因此。所以其平等的http://example.com/js/script.js/js/script.js

+0

http://httpd.apache.org/docs/current/mod/mod_rewrite.html,搜索RewriteRule反向引用 – cske

+0

這裏的答案有什麼問題? http://stackoverflow.com/questions/18724917/htaccess-rewrite-rule-to-prevent-caching-of-css-js-image-files –

+0

它不工作,我需要它..並重新訪問它,我覺得我很少表達需要,而不是進行大量的編輯,這會改變整個事情,我又提出了另一個問題。另一個將服務於其他需求的目的。但是在那個我想要做的事情上,這個帖子返回了404。 – chris

回答

0

RewriteCond $1 ^(.*)/__ver([0-9]+)__/(.*)$並不意味着什麼。 $1是該行第一個參數中正則表達式中的第一個捕獲組。由於這是第一個參數,因此您目前正在匹配字符$1的文件路徑。這顯然永遠不會匹配。

你想要什麼可以很容易地用常規的重寫規則進行:

RewriteRule ^(.*)/__ver[0-9]+__/(.*)$ /$1/$2 

請確保您啓用RewriteEngine並設置RewriteBase /