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

标签 linux .htaccess redirect seo

我知道有人问过这个问题,但我仍然找不到确切的答案。我已经更改了我的域名。所有网站文件和网址仍然相同。旧域仍然指向同一台服务器,我在 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 文件的末尾(这通常是不正确的)。

如果您在此之前有一个前端 Controller (例如 WordPress 使用的),那么您会发现这些指令只会针对对文档根目录(即“主页”)的请求进行处理,就像所有其他请求一样将被前端 Controller 停止。

这些指令也可以简化:

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

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

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

关于linux - 将旧域的每个页面重定向到新域上的同一页面 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55717012/

相关文章:

.htaccess 多个域重定向到一次 https 没有 www

linux - 如何在 linux 中为 eclipse 3.4.x 插入 gwt

java - Netbeans 无法在 Ubuntu 14.10 中打开

apache - 在 .htaccess 中允许使用 mod_rewrite 而不是 mod_setenvif 的 env

.htaccess - 如何阻止空的用户代理请求

php - 不使用 PHP 重定向的 POST

php - Htaccess - 301 域名重定向

java - logstash 启动问题

linux - xargs 与 ipinfo.io 形成一行以获取信息

php - 将任何 GET 请求重定向到单个 php 脚本