RewriteRule ^(。*)$&的区别RewriteRule(。*)$

时间:2013-05-13 20:09:13

标签: .htaccess mod-rewrite redirect http-status-code-301

将所有网页从旧域移动到新域时,我注意到有些人添加了^而其他人没有重新编写

之间有什么不同
RewriteRule ^(.*)$ http://mynewdomain.com/$1 [R=301,L]

RewriteRule (.*)$ http://mynewdomain.com/$1 [R=301,L]
谢谢。

2 个答案:

答案 0 :(得分:2)

最好尽可能使用开始和结束锚点(^$),如^(.*)$,但在列出的两个案例中,两个规则表现相似< /强>

答案 1 :(得分:2)

他们都错了。无需在后向引用中匹配任何内容,因为Apache具有当前URL的内置变量:%{REQUEST_URI}

RewriteRule .? http://www.newdomain.com%{REQUEST_URI} [L,R=301]

至于你的问题,^的含义是'匹配在URL and $`的开头是'匹配在URL的末尾'。这可能是最简单的例子。

^ welcome /匹配url / welcome / a / b / c,/ welcome / b / c / d等,以/ welcome开头的任何内容

欢迎$ matches / a / b / welcome,/ a / something / welcome等,任何以'welcome'结尾的内容

您在问题中提出的第一个RewriteRules是“具有开头和结尾以及中间内容的URL”,而第二个是“具有一些文本然后结束的URL”。这两个表达式都非常通用,可以匹配你抛出的任何东西。