【问题标题】:Redirect all pages of one TLD to another将一个 TLD 的所有页面重定向到另一个
【发布时间】:2011-12-16 04:19:42
【问题描述】:

\今晚想弄清楚这一点,我差点把头发拉出来。我希望有人可以帮助我。

我有一个网站的 3 个 TLD,类似于以下内容:

  • www.domain.com
  • www.domain.org
  • www.domain.net

它们都位于同一个目录中。

我想设置 301 重定向,以便 .org 和 .net 的所有页面都指向它们各自位于 .com 位置的页面。

例如,domain.net/topic/page 和 www.domain.net/topic/page 应该永久重定向到 www.domain.com/topic/page。

目前,我正在使用下面的代码,它只将 .net 和 .org 主页重定向到 .com 主页。

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

感谢您的宝贵时间,

凯西

【问题讨论】:

    标签: php apache .htaccess redirect http-status-code-301


    【解决方案1】:

    这是基于您的示例稍作修改:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^(www\.)?domain\.com$ [NC]
    RewriteRule ^(.*) http://www.domain.com/$1 [R=301,NE,L]
    

    NCR=301L 非常明显。 NE 用于禁止转义,它可以防止查询字符串变量被转义两次。在大多数情况下,^(.*) 不需要/

    注意:301 永久重定向响应将被浏览器缓存,因此在测试时不时清除浏览器缓存。否则您可能看不到所做更改的结果。

    【讨论】:

    • 像我的一样,你的只是重定向主页。例如,当我输入 domain.net/about 时,我仍然登陆 .net 版本。
    • 它似乎在我的系统上运行。尝试打开您网站上不存在的 URL,例如domain.net/foobar?a=b 看看你是否被发送到domain.com/foobar?a=b
    • 不客气。不要忘记投票和/或接受答案
    【解决方案2】:
    RewriteCond %{HTTP_HOST}   domain\.(org|net) [NC]
    RewriteRule ^/(.*)         http://www.domain.com/$1 [L,R=301]
    

    还有很多其他的方式来编写 Cond,这就是我的方式 - 一个积极的比较。你的比较是负面的,但它有一个缺点,如果有人不发送主机头,它将永远重定向,另外你不需要列出所有要重定向的域。如果你愿意,你也可以添加一个规则来重定向 .com,而不需要 www。

    对于规则,诀窍是表达式中的 () - 这会捕获 URL 的该部分以供以后与 $1 一起使用

    【讨论】:

    • 谢谢 Ariel,不幸的是,当我插入您的 Condition 时似乎没有任何反应。
    • 那么是时候简化了。将 Cond 减少到无 - 即它匹配所有内容,并使规则静态(没有 $1,只需重定向到一些简单页面。然后慢慢添加内容直到它中断。
    【解决方案3】:
    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
    RewriteRule ^(.*)$ http://www.domain.com$1 [R=301,L]
    

    如果主机不是 www.domain.com

    ,这会将每个请求重定向到 www.domain.com,包括查询字符串和请求 uri

    【讨论】:

    • 感谢您的帮助 Seybsen - 但这似乎仍然只重定向主页。例如,当我输入 domain.net/about 我仍然登陆 .net 版本
    • 您能否更新您的问题并添加完整的 .htaccess 或 virtualhost 配置?我发布的重写是 100% 工作的(我用它来处理和你一样的情况)
    猜你喜欢
    • 2017-08-31
    • 2012-05-28
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多