我在新域名上推出了新版网站。在旧域名上,我使用全局 RewriteRule 将流量重定向到新域名。
RewriteRule (.*)$ https://www.newsite.com/$1 [R=301,L]
这对大多数页面来说都很好用。现在我正在做单独的 301 重定向来更正一些地址已更改的页面,但它们似乎不起作用。
我正在尝试重定向oldsite.com/login
并oldsite.com/profile
newsite.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 总是在重定向规则之前执行。