【发布时间】:2010-09-17 09:18:30
【问题描述】:
如果我的 .htaccess 中有一些规则:
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^.*$ - [NC,L]
RewriteRule ^assets/img(.*)/([a-zA-Z0-9-_\.]*)\.(.*)\.([a-z]{2,4})$ /assets/img$1/.$2.$4/$3.$4 [NC,L]
这会导致 /assets/img/path/image.jpg > /assets/img/path/image.jpg
第二条规则:/assets/img/path/image.small.jpg > /assets/img/path/.image.jpg/small.jpg
现在我想检查 small.jpg 是否存在,所以我将最后一条规则替换为:
RewriteRule ^assets/img(.*)/([a-zA-Z0-9-_\.]*)\.(.*)\.([a-z]{2,4})$ /assets/img$1/.$2.$4/$3.$4 [NC]
RewriteCond %{DOCUMENT_ROOT}/assets/img$1/.$2.$4/$3.$4 !-f
RewriteRule ^assets/img(.*)/([a-zA-Z0-9-_\.]*)\.(.*)\.([a-z]{2,4})$ /assets/img/image.php?path=$1&file=$2.$4&template=$4 [NC,L,QSA]
但这不起作用。如果文件已被另一个 RewriteRule 重写,有什么想法如何检查文件是否存在?
【问题讨论】:
标签: .htaccess mod-rewrite