2012-10-24 35 views
0

大家好我有這個問題,因爲我的重寫規則如下所示。但每次當我使用這段代碼時,js文件都無法工作。如何更改重寫規則以僅讀取圖像

RewriteRule ^([^thumb].*\.[jJ].*)$ /images/files/w.php?i=$1 

有誰能告訴我哪裏出了問題?

+0

順便說一句,你應該回去,並接受了一些問題的答案,否則人們將不太可能去嘗試並回答未來的問題。 – JaredMcAteer

回答

2

爲了處理更多的不僅僅是JPG格式,你可以改變它是以下幾點:

RewriteRule ^([^thumb].*\.(jpe?g|png|gif).*)$ /images/files/w.php?i=$1 

這將覆蓋jpg,jpeg,pnggif文件擴展名,但不匹配JavaScript文件。

注:[^thumb].*將不匹配開始thum,或b任何文件的名稱(例如,test.jpghome.jpgumbrella.jpgmonster.jpg,或beach.jpg將不匹配),而不僅僅是開頭的文件thumb...,對於整個單詞thumb,您需要負面預測(?!regex)。爲了使該規則不匹配的開始與「拇指」的文件,這是規則應該是什麼樣子:

RewriteRule ^((?!thumb).*\.(jpe?g|png|gif).*)$ /images/files/w.php?i=$1 

最後一個問題的規則處理我假設手段的文件擴展名後的文本,你可能有網址看像:

http://www.example.com/test.png?foo=a&b=baz

你的規則將創建結束看起來像

http://www.example.com/images/files/w.php?i=test.png?a=foo&b=baz

重寫

這不是一個有效的URL,因爲查詢字符串中現在有兩個?。要解決這個問題,我會使用下面的正則表達式。

RewriteRule ^((?!thumb).*\.(?:jpe?g|png|gif))\??(.*)$ /images/files/w.php?i=$1&$2 

這正則表達式規則將導致一個正確形成的URL

http://www.example.com/images/files/w.php?i=test.png&a=foo&b=baz

+0

嗨,我完美的工作。但我如何使初始只在特定文件夾中有水印? –

+0

對不起,我不確定你在問什麼。 – JaredMcAteer

2

快速和骯髒的「解決方案」,因爲你明明想單獨的JPEG和JS:

RewriteRule ^([^thumb].*\.[jJ][pP].*)$ /images/files/w.php?i=$1