我需要重写图像文件的URL。这是一个简单的部分,看起来像这样:
RewriteRule ^img[/]?(/[^.]+)?$ - [L]
RewriteRule ^img/([A-Za-z0-9_-\s]+)/([A-Za-z0-9_\-\s\.]+)?$ cache/$1-$2 [L]
但是如果在该缓存目录中找不到图像文件,我需要再次将其重写为PHP脚本,该脚本将创建图像并将其保存在该缓存目录中。
我尝试了以下重写,但它并没有按预期工作。相反,无论文件是否存在于缓存中,所有图像URL都会被重写为PHP文件。
#RewriteCond cache/%{REQUEST_FILENAME} !-f
#RewriteCond cache/%{REQUEST_FILENAME} !-d
#RewriteRule ^cache/([A-Za-z0-9_\s]+)-([A-Za-z0-9_\-\s\.]+)?$ createimg.php?type=1&hash=$1&filename=$2 [L]
有什么想法吗?感谢。
答案 0 :(得分:0)
由于在第一条规则之后,相同的规则将与新网址匹配,网址已经包含"缓存/"。 %{REQUEST_FILENAME}
和其他魔术变量会相应更新。因此,您不需要放置"缓存/"在变量前面。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^cache/([A-Za-z0-9_\s]+)-([A-Za-z0-9_\-\s\.]+)?$ createimg.php?type=1&hash=$1&filename=$2 [L]