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

时间:2017-08-03 11:56:52

标签: apache .htaccess redirect mod-rewrite no-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
  4. 重定向到:

    • <domain>.com(没有www)

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

    要将www重定向到非www,请使用以下条件:

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

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

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

2 个答案:

答案 0 :(得分:1)

Croises发布的想法开始,这就是我最终的结果:

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

答案 1 :(得分:0)

您可以使用:

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