在.htaccess中,(。*)$和。* $之间有什么区别

时间:2016-02-23 21:14:13

标签: apache .htaccess mod-rewrite url-rewriting rewrite

使用重写时,(。)$和。 $之间有什么区别,例如下面两行:

RewriteRule ^blog/blog(.*)$ http://example.com/blog$1 [L,R=301]
RewriteRule ^blog/blog.*$ http://example.com/blog$1 [L,R=301]

由于

1 个答案:

答案 0 :(得分:3)

这两个正则表达式模式本身(。*)$和。* $意思相同:

。是指任何单个字符
*是量词,表示任何字符的出现次数为0或更多 $是字符串字符的结尾...

不同之处在于,第一个使用与parens的分组。它只是意味着匹配部分(。*)可以用于$#的反向引用。因此,对于您给出的示例:

这是有道理的,因为替换中的$ 1有一个分组来拉取:

RewriteRule ^blog/blog(.*)$ http://example.com/blog$1 [L,R=301]

这是没有意义的,因为1美元没有什么可以拉的:

RewriteRule ^blog/blog.*$ http://example.com/blog$1 [L,R=301]