尝试通过 .htaccess 将页面从旧域重定向到新域

Trying to redirect pages from old domain to new domain through .htaccess

我正在尝试使用 .htaccess 进行重定向,但 运行 遇到了一个我无法识别的问题。

我想做什么:将所有页面从我的旧域重定向到我的新域。 例如:https://www.olddomain.com/fun-blog-post/ would forward to https://www.newdomain.com/blog/fun-blog-post/

我的代码:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^olddomain.com/ [OR]
RewriteCond %{HTTP_HOST} ^www.olddomain.com/
RewriteRule (.*)$ https://www.newdomain.com/blog/ [L,R=301]

意外行为:当我输入 olddomain.com 时,它会直接转到 newdomain.com。但是,如果我输入 olddomain.com/new-blog-post,它根本不会重定向。它引发 404 错误并仅显示 olddomain.com/new-blog-post.

我已经检查了以下两个线程。

.htaccess redirect all pages to new domain

但是,我想不通这一点。我尝试了一些不同的调整,其中大部分我都不记得了,但这似乎是我能想到的最佳解决方案。有人可以帮我看看我做错了什么吗?

RewriteCond %{HTTP_HOST} ^olddomain.com/ [OR]
RewriteCond %{HTTP_HOST} ^www.olddomain.com/
RewriteRule (.*)$ https://www.newdomain.com/blog/ [L,R=301]

如所写,这不会重定向任何内容,因为 RewriteCond 指令中 CondPattern 末尾的错误 /

应该这样写(两个RewriteCond指令可以合二为一):

RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com [NC]
RewriteRule (.*) https://www.newdomain.com/blog/ [R=301,L]

这需要靠近 .htaccess 文件的顶部,在任何现有指令之前。

注意:首先使用 302(临时)重定向进行测试,以避免潜在的缓存问题。

测试前您需要清除浏览器缓存。

When I type in olddomain.com, it takes me directly to newdomain.com

这可能是由于缓存的重定向或“其他原因”造成的。您发布的规则甚至不会触发此重定向。