大家好我有這個問題,因爲我的重寫規則如下所示。但每次當我使用這段代碼時,js文件都無法工作。如何更改重寫規則以僅讀取圖像
RewriteRule ^([^thumb].*\.[jJ].*)$ /images/files/w.php?i=$1
有誰能告訴我哪裏出了問題?
大家好我有這個問題,因爲我的重寫規則如下所示。但每次當我使用這段代碼時,js文件都無法工作。如何更改重寫規則以僅讀取圖像
RewriteRule ^([^thumb].*\.[jJ].*)$ /images/files/w.php?i=$1
有誰能告訴我哪裏出了問題?
爲了處理更多的不僅僅是JPG格式,你可以改變它是以下幾點:
RewriteRule ^([^thumb].*\.(jpe?g|png|gif).*)$ /images/files/w.php?i=$1
這將覆蓋jpg
,jpeg
,png
和gif
文件擴展名,但不匹配JavaScript文件。
注:[^thumb].*
將不匹配開始t
,h
,u
,m
,或b
任何文件的名稱(例如,test.jpg
,home.jpg
,umbrella.jpg
,monster.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
嗨,我完美的工作。但我如何使初始只在特定文件夾中有水印? –
對不起,我不確定你在問什麼。 – JaredMcAteer
快速和骯髒的「解決方案」,因爲你明明想單獨的JPEG和JS:
RewriteRule ^([^thumb].*\.[jJ][pP].*)$ /images/files/w.php?i=$1
順便說一句,你應該回去,並接受了一些問題的答案,否則人們將不太可能去嘗試並回答未來的問題。 – JaredMcAteer