在 .htaccess 中,(.*)$ 和 .*$ 之间有什么区别
In .htaccess what is the difference between (.*)$ and .*$
使用重写时,(.)$ 和 .$ 之间的区别是什么,例如以下两行:
RewriteRule ^blog/blog(.*)$ http://example.com/blog [L,R=301]
RewriteRule ^blog/blog.*$ http://example.com/blog [L,R=301]
谢谢
这两个正则表达式模式本身 (.*)$ 和 .*$ 意思相同:
那个。表示任何单个字符
* 是量词,表示 any char
出现 0 次或多次
$ 是字符串字符的结尾...
不同的是,第一个用括号分组。它只是意味着匹配项 (.*) 的一部分随后可以用在带有 $# 的反向引用中。所以对于你给出的例子:
这是有道理的,因为您在替换中的 $1 有一个分组可以从中提取:
RewriteRule ^blog/blog(.*)$ http://example.com/blog [L,R=301]
这没有意义,因为 $1 没有任何可取之处:
RewriteRule ^blog/blog.*$ http://example.com/blog [L,R=301]
使用重写时,(.)$ 和 .$ 之间的区别是什么,例如以下两行:
RewriteRule ^blog/blog(.*)$ http://example.com/blog [L,R=301]
RewriteRule ^blog/blog.*$ http://example.com/blog [L,R=301]
谢谢
这两个正则表达式模式本身 (.*)$ 和 .*$ 意思相同:
那个。表示任何单个字符
* 是量词,表示 any char
出现 0 次或多次
$ 是字符串字符的结尾...
不同的是,第一个用括号分组。它只是意味着匹配项 (.*) 的一部分随后可以用在带有 $# 的反向引用中。所以对于你给出的例子:
这是有道理的,因为您在替换中的 $1 有一个分组可以从中提取:
RewriteRule ^blog/blog(.*)$ http://example.com/blog [L,R=301]
这没有意义,因为 $1 没有任何可取之处:
RewriteRule ^blog/blog.*$ http://example.com/blog [L,R=301]