为什么此重写规则需要 *.*

为什么此重写规则需要 *.*

我想将文件名以字符串(如“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___

在正则表达式中,.是一个通配符,这就是为什么它.*可以工作,但*单独使用则不行。

相关内容