.htaccess 301将旧网址重定向传递到新网址

hel*_*tan 0 .htaccess redirect url-redirection

我将一些静态html文件/ URL重定向到这样的一些新URL:

Redirect 301 / http://newsite.com
Redirect 301 /pageA.html http://newsite.com/subfolder/page-a/
Redirect 301 /pageA-B.html http://newsite.com/subfolder/page-a/page-b/
Run Code Online (Sandbox Code Playgroud)

但是,生成的URL看起来像这样:

http://newsite.com/subfolder/pageA-B.html/
Run Code Online (Sandbox Code Playgroud)

代替

http://newsite.com/subfolder/page-a/page-b/
Run Code Online (Sandbox Code Playgroud)

为什么我的网址重定向会沿旧路径传递?

hel*_*tan 5

事实证明,这只是一个优先顺序。似乎第一个规则是:

Redirect 301 / http://newsite.com
Run Code Online (Sandbox Code Playgroud)

立即变成一个包罗万象的东西。相反,需要颠倒顺序:

Redirect 301 /pageA-B.html http://newsite.com/subfolder/page-a/page-b/
Redirect 301 /pageA.html http://newsite.com/subfolder/page-a/
Redirect 301 / http://newsite.com
Run Code Online (Sandbox Code Playgroud)

从我收集的数据来看,我的原始方式是,离开根目录的任何路径都将自动匹配根目录,因为它实际上将旧网址作为参数传递。但是通过颠倒顺序,这是一个更明确的匹配,然后优先进行匹配,因为它位于它尝试匹配的网址列表的顶部。

不知道我是否在正确解释这种逻辑/操作顺序,但是那是最好的,我可以在凌晨4点总结此功能。