【问题标题】:How to redirect, using .htaccess, multiple top level domains to one top level domain without www?如何使用 .htaccess 将多个顶级域重定向到一个没有 www 的顶级域?
【发布时间】:2018-01-11 00:25:04
【问题描述】:

我有多个具有不同 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>.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

【问题讨论】:

    标签: apache .htaccess redirect mod-rewrite no-www


    【解决方案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]
    

    【讨论】:

      【解决方案2】:

      你可以使用:

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

      【讨论】:

      • 似乎不起作用。非 .com 会被重定向到 .com,但 .com 最终会重定向到自身。重定向太多。
      • 您是否清除了缓存或尝试使用其他浏览器?
      • 是的,我尝试使用多个浏览器,清除缓存并使用 curl 我有这个域:santestlaborator.ro,santestlaborator.com(我将 RewriteCond 更改为包含 .ro)使用 curl -I http://www.santestlaborator.com 我得到301 但我得到了同样的东西 curl -I http://santestlaborator.com
      • 第二个 RewriteCond 行的 %1 没有绑定到第一个 RewriteCond 的 (.+) 组。所以当HTTP_HOST&lt;domain&gt;.com 时,第二个RewriteCond 为真,因为&lt;domain&gt;.com 与评估的.com 不同。当我在第二个 RewriteCond 中硬编码域时,它可以工作,而不是 %1
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-18
      • 2019-07-07
      • 2017-12-03
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 2011-12-14
      相关资源
      最近更新 更多