使用 htaccess 将多个域(http https www 和非 www)重定向到新域

Posted

技术标签:

【中文标题】使用 htaccess 将多个域(http https www 和非 www)重定向到新域【英文标题】:Redirect multiple domains (http https www & non-www) to a new domain using htaccess 【发布时间】:2021-04-23 15:42:21 【问题描述】:

我有 3 个不同的域(有两个不同的 TLD),我希望我的所有域都重定向到一个(包括所有格式 http https www 或非 www)-> https://www.newdomain.com

我所有的域:

http://olddomain.net
http://www.olddomain.net 
https://olddomain.net
https://www.olddomain.net 

http://olddomain2.com
http://www.olddomain2.com 
https://olddomain2.com
https://www.olddomain2.com

http://newdomain.com
http://www.newdomain.com 
https://newdomain.com
https://www.newdomain.com

所以所有这些域都必须重定向到:https://www.newdomain.com

我尝试了许多不同的 htaccess 配置,但我没有处理所有重定向。到目前为止我发现了什么:

RewriteEngine On
RewriteCond %HTTP_HOST ^olddomain\.net$ [OR]
RewriteCond %HTTP_HOST ^olddomain2\.com$ [OR]
RewriteCond %SERVER_PORT 80 [OR]
RewriteCond %HTTP_HOST !^www\. [NC]
RewriteRule ^(.*)$ https://www.newdomain.com/$1 [L,NE,R=301]

但它不能处理所有的变化。我认为这让 Google bot 感到困惑,因为我的新主 url 没有被编入索引。

如何修改我的 htaccess 以处理所有可能性?

【问题讨论】:

您是否有任何其他域指向同一目录,必须受此影响?否则,我会扭转逻辑 - 如果主机 not www.newdomain.com 或 HTTPS 已关闭,则重定向。 【参考方案1】:

可以使用这样的单一重定向规则来完成:

RewriteEngine On

RewriteCond %HTTPS !on [OR]
RewriteCond %HTTP_HOST !^www\.newdomain\.com$ [NC]
RewriteRule ^ https://www.newdomain.com%REQUEST_URI [NE,R=301,L]

【讨论】:

【参考方案2】:

根据您显示的示例,您能否尝试以下操作。请确保在检查 URL 之前清除浏览器缓存。如果您的 HTTP_HOST 不等于您的新域,我会检查条件,但我担心它也会触及您不想重定向到新域的其他域。

RewriteEngine ON
RewriteCond %HTTP_HOST ^(?:www\.)?olddomain\.net [NC]
RewriteRule ^ https://www.newdomain.com%REQUEST_URI [NE,R=301,L]

RewriteCond %HTTP_HOST ^(?:www\.)?olddomain2\.com [NC]
RewriteRule ^ https://www.newdomain.com%REQUEST_URI [NE,R=301,L]

【讨论】:

以上是关于使用 htaccess 将多个域(http https www 和非 www)重定向到新域的主要内容,如果未能解决你的问题,请参考以下文章

htaccess 多个域重定向到 https://www 和特定文档根目录

.htaccess 使用 SSL/HTTPS 将 www 重定向到非 www

htaccess 使用 OR 和 NC 重定向

htaccess:将所有域(https和http)重定向到新域

htaccess 将旧域重定向到新域

使用多个参数重定向 URL 以清除 .htaccess 中的 URL