2010-03-26 147 views
0

我想寫一些mod_rewrite規則來動態生成縮略圖。 所以,當這個URL重寫查詢字符串

example.com/media/myphoto.jpg?width=100&height=100 

腳本應該把它改寫爲

example.com/media/myphoto-100x100.jpg 

,如果文件存在它就會被Apache服務的磁盤上,如果不存在,它被稱爲腳本生成文件。

我寫這

RewriteCond %{QUERY_STRING}        ^width=(\d+)&height=(\d+) 
RewriteRule ^media/([a-zA-Z0-9_\-]+)\.([a-zA-Z0-9]+)$ media/$1-%1x%2.$2 [L] 
RewriteCond %{QUERY_STRING}        ^(.+)? 
RewriteRule ^media/([a-zA-Z0-9_\-\._]+)$     media/index.php?file=$1&%1 [L] 

,我得到無限的內部重定向。 匹配第一個條件並執行規則,之後我得到內部重定向。

我需要建議來完成這個腳本。

謝謝。

回答

0

嘗試使用此爲您的第二個條件:

RewriteCond %{REQUEST_FILENAME} !-f 

「-f」(是普通文件) 將TestString視爲一個路徑名並測試它是否存在且是一個普通文件。

RewriteCond

0

嘗試下列規則:

RewriteCond %{QUERY_STRING} ^width=(\d+)&height=(\d+)$ 
RewriteCond %{DOCUMENT_ROOT}/media/$1-%1x%2.$2 -f 
RewriteRule ^media/([a-zA-Z0-9_\-]+)\.([a-zA-Z0-9]+)$ media/$1-%1x%2.$2 [L] 
RewriteCond $1 !=index.php 
RewriteRule ^media/([a-zA-Z0-9_\-]+\.[a-zA-Z0-9]+)$ media/index.php?file=$1 [L,QSA] 

的第一條規則測試的第二個條件,如果沒有與該名稱(-f)的文件。

+0

這個條件運行在每個重定向上,即使uri被重寫並且匹配: RewriteCond:input ='width = 100&height = 100'pattern ='^ width =(\ d +)&height =(\ d +)'= >匹配 – drakoola 2010-03-26 17:26:50