我想将文件名以字符串(如“myimage_”)开头的所有图像的请求重定向到另一台服务器上的子目录。我想了解为什么以下规则不适用于我的用例。
RewriteRule ^img/app/(gi_*)$ http://images.mydomain.com/targetdir/$1 [R=301,L]
但是这个确实如此:
RewriteRule ^img/app/(myimage_*.*)$ http://images.mydomain.com/targetdir/$1 [R=301,L]
答案1
mod_rewrite
用途正则表达式(或“RegEx”)匹配重写规则输入,并且在正则表达式中*
不是通配符。*
只是意味着“匹配前面的标记零次或多次” - 在这种情况下,前面的标记是,_
所以img/app/gi
会返回匹配,因为会img/app/gi___
。
在正则表达式中,.
是一个通配符,这就是为什么它.*
可以工作,但*
单独使用则不行。