我有一组重写,应该可以捕获/cache/images/*
文件系统上不存在的任何请求,并根据后缀返回通用图像(对于/cache/images/foo_1.jpg
不存在的资产请求,相应的 *_1.jpg)。
下面的代码块适用于大多数情况,但也匹配以或结尾的所有请求1.jpg
,例如“domain.com/1.jpg”也返回通用图像。2.jpg
3.jpg
/images/generic_1.jpg
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule . - [L]
RewriteCond %{REQUEST_URI} ^/cache/images/.*$ [NC]
RewriteRule .*1.jpg /images/generic_1.jpg [L]
RewriteRule .*2.jpg /images/generic_2.jpg [L]
RewriteRule .*3.jpg /images/generic_3.jpg [L]
如果我将第二个复制RewriteCond
到 2.jpg 和 3.jpg 前面RewriteRule
,它会按设计工作,但我想正确执行此操作并将其应用于其下方的RewriteCond
三个RewriteRule
。我做错了什么?
答案1
[L]
- 表示最后评估的规则:http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewriterule(-:你能从这里拿到它吗……?
编辑1- 清理规则:
如果你的文件以这种模式命名,你可以做这样的事情:
RewriteRule .*(\d{1,}).jpg /images/generic_$1.jpg
\d{1,}
- 匹配 1 位或更大的数字;将其放在一对“ ()
”中意味着“将匹配的字符串保存到$1
”(又名第一个匹配),然后您可以在目标路径中使用它。