2011-06-28 305 views
0

我在我的htaccess以下行重寫css文件到另一個位置:的mod_rewrite的.htaccess問題

RewriteCond {REQUEST_FILENAME} !-f [NC] OR 
RewriteCond {REQUEST_FILENAME} !-d [NC] 
RewriteRule ^\\/?(.*)\.(css|js)$ public/$2/$1.$2 [L,NC,NE] 

但是當網站試圖載入的文件,有一個錯誤配置的errer。實際問題是1美元到2美元之間的點。我想當服務器發現文件時,它會陷入無限循環。

沒有人知道該錯誤的原因?

回答

2

自從我查看其中一些語法的語法後,我已經有一段時間了,但我認爲OR將在括號內。這就是說,這是你的問題的一部分;你需要兩個條件都是RewriteCond。另外,您需要實際存在的文件;如果找不到文件,無論如何你都會進入無限循環。另一種方法可能是:

RewriteRule ^public/(css|js)/ - [NC,L] 

之前RewriteCond指令,因此,沒有什麼在public/csspublic/js被改寫,無論它是存在的。

此外,在每個目錄上下文中(即.htaccess),RewriteRule匹配的值不以斜槓開始。這不會導致你的問題,但它可以爲你節省幾個字符,並使你的正則表達式更易於閱讀。

+0

非常感謝你!解決了它! – mightyplow

0

它進入無限循環,因爲您重定向的目錄也滿足正則表達式。

+0

是的。我想到了那樣的事情。所以至少我知道在哪裏看。 – mightyplow

2

寫你這樣的規則,以避免無限循環:

RewriteRule ^(?!public/)(.*)\.(css|js)$ public/$2/$1.$2 [L,NC] 

負提前看就會防止無限循環爲您服務。

+0

甚至比其他解決方案更「美麗」=) – mightyplow