2012-12-30 33 views
0

愚蠢的問題htaccess的重寫URL只能用PNG,JPG擴展

怎樣才能把:

RewriteRule ^$ index.php?url=$1&%{QUERY_STRING} [QSA] 

到:

RewriteRule ^$ index.php?url=*.(jpe?g|png|bmp)&%{QUERY_STRING} [QSA] 

重寫URL http://site.com/folder/index.php?url=123.jpg&do=xxx

http://site.com/folder/123.jpg?do=xxx

第一條規則可以做到這一點,但我需要防止gif文件

+1

第二個是不是一個有效的重寫規則,首先會重複的查詢字符串。你想重寫什麼?發佈一個樣本輸入URL(從瀏覽器的角度來看)以及它被寫入的輸出URL。 –

+1

(緊急刪除,因爲這是一個確定的方式來讓你的問題關閉) –

+0

你爲什麼不解釋你的目標是什麼? – didierc

回答

2

所以,你正在尋找讓瀏覽器提供的圖像URL像folder/123.jpg(或.gif,.png或.BMP)到index.php?url=123.jpg並追加現有的查詢字符串:

RewriteEngine On 
RewriteRule ^folder/([^.]+)\.(jpg|jpeg|png|bmp)$ folder/index.php?url=$1.$2 [L,QSA] 

模式([^.]+)抓住一切直到.$1,並且擴展捕獲到$2[QSA]將追加現有的查詢字符串do=xxx,而無需執行任何手動追加操作。

這可以簡化Apache2與非捕獲組(?:)因此,整個事情被捕獲$1

RewriteRule ^folder/([^.]+\.(?:jpg|jpeg|png|bmp))$ folder/index.php?url=$1 [L,QSA] 

或者你可以有條件地應用它:

# If the request ends in .jpg, .bmp, .png... 
RewriteCond %{REQUEST_URI} \.(jpe?g|bmp|png)$ 
RewriteRule ^folder/(.*)$ folder/index.php?url=$1 [L,QSA] 
+0

非常感謝! –