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

时间:2019-04-16 21:44:22

标签: linux .htaccess redirect seo

我知道这个问题有各种各样的问题,但我仍然找不到确切的答案。我已经更改了域名。所有网站文件和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]

问题在于,这只会重定向旧的域主页。我该怎么办,而不必为每个页面添加单独的重定向。

1 个答案:

答案 0 :(得分:0)

听起来好像您将这些指令放在.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的非常典型。)