如何使用 .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:
www.<domain>.net
, <domain>.net
www.<domain>.org
、<domain>.org
www.<domain>.com
将重定向到:
<domain>.com
(没有 www)
<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]
我有多个具有不同 TLD(.com、.net、.org)的域,但 TLD 前面的内容是相同的。
我想将 .net 和 .org 重定向到 .com,不带 www:
www.<domain>.net
,<domain>.net
www.<domain>.org
、<domain>.org
www.<domain>.com
将重定向到:
<domain>.com
(没有 www)
<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]