2010-03-26 296 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