htaccess重定向301重定向到错误的网址

时间:2017-10-02 17:39:15

标签: .htaccess redirect

我在.htaccess中创建了一堆301重定向,例如

Redirect 301 / /de/
Redirect 301 /site_1/ https://www.new.com/de/company/site_1/
Redirect 301 /services/site_2/ https://www.new.com/de/services/site_1/

等等。

当我进入

www.old.com/site_1/(错误)

我被定向到

https://www.new.com/de/site_1/(缺少服务文件夹)

似乎重定向的网址中缺少父文件夹。对于驻留在文件夹中的所有其他站点也是如此。

1 个答案:

答案 0 :(得分:1)

Redirect 301 / /de/
Redirect 301 /site_1/ https://www.new.com/de/company/site_1/
Redirect 301 /services/site_2/ https://www.new.com/de/services/site_1/

由于mod_alias Redirect指令是前缀匹配,因此www.old.com/site_1/的请求实际上会被您的第一个(最常规)规则捕获。并且匹配后的所有内容(即。site_1/)都会附加到目标网址的末尾(即/de/),因此生成的重定向变为/de/site_1/(但不会{{1}如你所说的那样?)。

您可以通过撤消指令来解决此问题,以便首先获得最具体的匹配。例如:

new.com

或者,正如您在评论中提到的那样,请改用Redirect 301 /services/site_2/ https://www.new.com/de/services/site_1/ Redirect 301 /site_1/ https://www.new.com/de/company/site_1/ Redirect 301 / /de/ - 这不是前缀匹配,而是与特定的正则表达式匹配。虽然您仍需要修改模式。类似的东西:

RedirectMatch

虽然这现在与确切的网址匹配,但可能是您需要的网址。