我有两个网址:old-site.com和new-site.com。我在old-site.com上的根文件夹中没有文件,只有.htaccess文件。我不想再使用旧域了。但是,我确实希望将链接汁传递给新域。因此,我在.htaccess文件中创建了301重定向,并将其放在old-site.com上的根文件夹中。
为什么Redirect 301会将“old-site.com/...”附加到new-site.com?
我的整个.htaccess看起来像这样(我跳过一些链接来缩短它):
#Begin 301 Redirects
Redirect 301 / https://www.new-site.com/
Redirect 301 /contactus https://www.new-site/contact-us/
Redirect 301 /rentals https://www.new-site/lodging/
Redirect 301 /lift.html https://www.new-site/our-rentals/boat/
Redirect 301 /rentals.html https://www.new-site/our-rentals/
Redirect 301 /map.html https://www.new-site/contact-us/
Redirect 301 /giftshop https://www.new-site/store/gift-shop/
#End 301 Redirects
我没有任何重写。以上是我的整个代码。
以下重定向工作正常:
Redirect 301 / https://www.new-site.com/
但是,任何其他重定向都会在new-site.com上创建以下绝对路径,并出现404错误:
如果我重定向:
Redirect 301 /contactus https://www.new-site/contact-us/
它去:
https://www.new-site.com/old-site.com/contactus
要么
如果我重定向:
Redirect 301 /lift.html https://www.new-site/lift/
它去:
https://www.new-site.com/old-site.com/lift.html
为什么Redirect 301会将“old-site.com/...”附加到new-site.com?
谢谢,
德里克
你的规则将不会做你需要的正确,因为这行Redirect 301 / https://www.new-site.com/
将首先匹配任何请求,如果你把它放在最后它也将匹配任何请求所以,如果你想它只匹配root使用RedirectMatch
能够像这样使用正则表达式:
RedirectMatch 301 /?$ https://www.new-site.com/
这样,其余规则将按预期工作。
注意:清除浏览器缓存测试