【问题标题】:.htaccess 301 redirect all pages on old domain to a single page on new domain.htaccess 301 将旧域上的所有页面重定向到新域上的单个页面
【发布时间】:2013-02-10 00:24:12
【问题描述】:

我希望将旧域上的每个页面重定向到新域上的单个页面。它还应该重定向 www 和非 www 版本。对域 old.com 的每一个请求,无论它可能是什么,都应该指向 www.new.com 根。

old.com/1.php
www.old.com/2.php
old.com/2.php
old.com/links/index.php
old.com/about-us.html
old.com/?string=1

应该全部重定向到:

www.new.com/

我正在寻找 .htaccess 解决方案。

【问题讨论】:

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


    【解决方案1】:

    您可以在 old.com 虚拟主机中使用 RedirectMatch

    RedirectMatch permanent .* http://www.new.com/
    

    Redirect 将匹配的 URI 的尾随部分附加到重定向 URI,但对于 RedirectMatch,您可以使用括号和 $number 引用选择要传输的部分(如果有)。

    如果新旧域必须是磁盘上同一个文档根目录的别名,那么您可能必须使用 mod_rewrite

    RewriteEngine on
    RewriteCond %{HTTP_HOST} old\.com$
    RewriteRule .* http://www.new.com/ [L,R=301]
    

    【讨论】:

    • 适用于大多数页面,但不适用于 www.old.com/?string=1
    • 第二种解决方案也不重定向 www.old.com/?string=1(相当于 www.old.com/index.php?string=1)。它确实重定向了所有以文件夹形式存在的 URL(www.old.com/folder/)
    • @DanHorvat 如果将问号? 附加到新域,查询字符串将被删除RewriteRule .* http://www.new.com/? [L,R=301]
    • 为了保留所有查询字符串,请在包含 RewriteRule 的行尾添加[QSA]
    【解决方案2】:

    这个问题已经得到解答,但这里的代码完全包含有用的 cmets,因此人们可以在以后忘记它的作用时参考。

    把它放在你的 .htaccess 文件中:

    ## Each and every page on old domain redirects to single page
    ## By appending question mark to new domain, query strings are removed
    RewriteEngine on
    RewriteCond %{HTTP_HOST} old\.com$
    RewriteRule .* http://www.new.com/? [L,R=301]
    

    您还可以重定向到另一个域上的子目录,就像我需要这样做的情况一样:

    ## Each and every page on old domain redirects to single page
    ## By appending question mark to new domain, query strings are removed
    RewriteEngine on
    RewriteCond %{HTTP_HOST} old\.com$
    RewriteRule .* http://www.new.com/sub-directory/? [L,R=301]
    

    【讨论】:

      【解决方案3】:

      这将处理您的所有重定向,包括查询字符串。对不起格式,我在打电话:)

      RewriteCond %{HTTP_HOST} old\.com$ RewriteCond %{QUERY_STRING} .+
      RewriteRule (.*) http://www.new.com$1?%{QUERY_STRING} [L,R=301,QSA]
      
      RewriteCond %{HTTP_HOST} old\.com$
      RewriteRule (.*) http://www.new.com$1 [L,R=301,QSA]
      

      【讨论】:

        猜你喜欢
        • 2011-09-24
        • 2014-09-23
        • 1970-01-01
        • 2011-11-04
        • 2016-11-14
        • 1970-01-01
        • 1970-01-01
        • 2012-05-25
        • 2019-07-22
        相关资源
        最近更新 更多