繁体   English   中英

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

[英]Trying to redirect pages from old domain to new domain through .htaccess

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

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

我的代码

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

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

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

.htaccess 将所有页面重定向到新域

从旧域重定向到新域不起作用

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

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

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

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

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

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

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

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

当我输入 olddomain.com 时,它会直接将我带到 newdomain.com

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM