301.htaccess中的重定向将旧文件路径/名称附加到新url

时间:2019-03-21 21:22:00

标签: .htaccess append http-status-code-404 http-status-code-301 absolute-path

我有两个URL:old-site.com和new-site.com。 我在old-site.com上的根文件夹中没有文件,只有.htaccess文件。我不想再使用旧域名。但是,我确实希望将链接源传递给新域。因此,我在.htaccess文件中创建了301重定向,并将其放在old-site.com的根文件夹中。

为什么重定向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

为什么重定向301会将“old-site.com/…”附加到new-site.com?

谢谢

德里克

1 个答案:

答案 0 :(得分:0)

您的规则不会执行您需要纠正的操作,因为此行Redirect 301 / https://www.new-site.com/将首先匹配任何请求,如果您将其放在最后,则它也将匹配任何请求,因此,如果您只希望匹配以root身份使用RedirectMatch可以像这样使用正则表达式:

RedirectMatch 301 /?$ https://www.new-site.com/

到此,其余规则将按预期工作。

注意:清除浏览器缓存测试