5

将所有页面从旧域移动到新域时,我注意到有些人添加了 ^ 和其他不在 rewriterule

之间有什么不同

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

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

谢谢你。

4

2 回答 2

7

他们都错了。不需要在反向引用中匹配任何内容,因为 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 开头的内容

welcome$ 匹配 /a/b/welcome、/a/something/welcome 等,任何以 'welcome' 结尾的东西

您在问题中提出的第一个 RewriteRules 是“一个有开始和结束以及介于两者之间的 URL”,而第二个是“一个有一些文本然后结束的 URL”。这两个表达式都非常通用,可以匹配你扔给它的任何东西。

于 2013-05-13T20:16:40.617 回答
2

^尽可能使用开始和结束锚 (和$)总是更好,^(.*)$但在您列出的 2 种情况下,两个规则的行为相似

于 2013-05-13T20:15:29.507 回答