.htaccess RewriteRule 有效,但重定向 301 无效

.htaccess RewriteRule 有效,但重定向 301 无效

我在新域名上推出了新版网站。在旧域名上,我使用全局 RewriteRule 将流量重定向到新域名。

RewriteRule (.*)$ https://www.newsite.com/$1 [R=301,L]

这对大多数页面来说都很好用。现在我正在做单独的 301 重定向来更正一些地址已更改的页面,但它们似乎不起作用。

我正在尝试重定向oldsite.com/loginoldsite.com/profilenewsite.com/my-account

这是.htaccess 文件:

RewriteEngine On

# This RewriteRule works
RewriteRule ^login$ https://www.newsite.com/my-account/ [L,R=301,NC]

# this Redirect 301 does not
Redirect 301 /profile https://www.newsite.com/my-account/

# Global rewrite rule
RewriteRule (.*)$ https://www.newsite.com/$1 [R=301,L]

我通过 RewriteRule正确地从 重定向oldsite.com/login到。newsite.com/my-account

当我访问时,oldsite.com/profile我会转到newsite.com/profile而不是newsite.com/my-account。重定向 301 不起作用,并且全局重定向规则已激活。

我不明白发生了什么!这是一台带有 Virtualmin 的最新 Cent OS 7 服务器。

知道为什么Redirect 301不工作吗?

答案1

看起来 RewriteRule 总是在 Redirect 之前执行,无论 .htaccess 文件中的顺序如何,所以全局 RewriteRule 总是在重定向规则之前执行。

https://stackoverflow.com/questions/4856193/using-mod-rewrite-and-mod-alias-redirect-301-together-in-htaccess

相关内容