将旧域的每个页面重定向到新域上的相同页面URL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将旧域的每个页面重定向到新域上的相同页面URL相关的知识,希望对你有一定的参考价值。

我知道这个问题已被提出所有变化,但我仍然找不到确切的答案。我已经更改了我的域名。所有网站文件和网址仍然相同。旧域仍然指向相同的服务器,我在htaccess文件中有以下代码。

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

问题是,这只会重定向旧域主页。我能做什么,所以我不必为每个页面添加单独的重定向。

答案

听起来你已经将这些指令放在.htaccess文件中的错误位置。他们需要在文件的开头,而不是最后。

这些指令看起来是典型的cPanel生成的重定向。 cPanel总是将重定向放在.htaccess文件的末尾(这通常是不正确的)。

如果您之前有一个前端控制器(例如WordPress使用的那个),那么您会发现只有处理对文档根目录(即“主页”)的请求才能处理这些指令,因为所有其他请求都将被停止由前端控制器。

这些指令也可以简化:

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

我已经从CondPattern的末尾删除了$,以匹配FQDN(以点结尾)。

RewriteRule替换中也没有必要使用反斜杠转义冒号,斜杠和点,因为这些字符在这里没有特殊含义(它不是正则表达式)。 (这种不必要的转义是cPanel非常典型的。)

以上是关于将旧域的每个页面重定向到新域上的相同页面URL的主要内容,如果未能解决你的问题,请参考以下文章

将旧域的所有网页重定向到新域索引

使用 Apache 将旧域上的旧路径重定向到新域上的新路径

htaccess 将旧域重定向到新域

重定向到新域上的相同路径

将所有域的所有站点重定向到新域,而不使用尾随查询字符串

如何 301 将所有页面重定向到新域上的相同页面