我有一套重写,应该赶上/cache/images/*文件系统不存在的/cache/images/*任何请求,并返回一个通用的图像根据后缀(相应的* _1.jpg的请求像/cache/images/foo_1.jpg这样的资源不存在)。
下面的代码块适用于大多数情况,但也匹配以1.jpg , 2.jpg或3.jpg结尾的所有请求,例如“domain.com/1.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 ,它按照devise工作,但是我想正确地执行这个操作,并将RewriteCond应用到它下面的三个RewriteRule 。 我究竟做错了什么?
[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位或更大的数字; 把它放在一对“ () ”的意思是“保存匹配的string为$1 ”(又名第一匹配),然后可以在目标path中使用。