常规表达式中的^(。*)$和^之间的区别(.htaccess)

时间:2013-10-21 15:24:44

标签: regex .htaccess mod-rewrite

有什么区别:

RewriteRule ^ http://example.com/page.html   [R=301,L]

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

2 个答案:

答案 0 :(得分:5)

这两条规则之间没有真正的区别,但为了简单起见,我更喜欢第一条规则。

由于您没有对匹配组中的REQUEST_URI执行任何操作,因此您无需使用^(.*)$

在第二条规则中捕获它

差异在于正则表达式:

^      - means match line start (will always match)
^(.*)$ - means match whole URI with 0 or more characters and capture it in $1

答案 1 :(得分:3)

正如anubhava所说 - 你的上下文没有区别,^也应该更快地匹配,因为它不需要解析直到行$的末尾而且不必存储$1变量中的任何内容。