如何使用 .htaccess 将多个顶级域重定向到一个没有 www 的顶级域?

How to redirect, using .htaccess, multiple top level domains to one top level domain without www?

我有多个具有不同 TLD(.com、.net、.org)的域,但 TLD 前面的内容是相同的。

我想将 .net 和 .org 重定向到 .com,不带 www:

  1. www.<domain>.net, <domain>.net
  2. www.<domain>.org<domain>.org
  3. www.<domain>.com

将重定向到:

<domain> 是动态的,我不想在 .htaccess 中对其进行硬编码。

为了将 www 重定向到非 www,我使用以下条件:

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/ [R=301,L]

我想扩展此条件以包括 TLD 条件并一步实现 301 重定向。我想避免两次重定向,如:

www.<domain>.net -[301]-> <domain>.net -[301]-> <domain>.com

您可以使用:

RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)\.(?:com|net|org)$ [NC]
RewriteCond %{HTTP_HOST} !^%1\.com$ [NC]
RewriteRule ^ http://%1.com%{REQUEST_URI} [R=301,NE,L]

Croises 发表的想法开始,这就是我最终得到的:

RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)\.(?:net|org)$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.(.+)\.(?:com)$ [NC]
RewriteRule ^(.*)$ http://%1.com/ [R=301,NE,L]