【问题标题】:Using .htaccess to redirect from one domain to another使用 .htaccess 从一个域重定向到另一个域
【发布时间】:2010-10-14 17:14:16
【问题描述】:

我最近为我的 WordPress 网站购买了一个新域,我想将使用旧域访问的任何人重定向到新域。我没有移动服务器,只是添加了一个新域。

例如,如果他们去了以下任何一个:

http://www.example.net/some-article/
http://example.net/some-article/

然后我希望它们被重定向到适当的 URL:

http://www.example.com/some-article/
http://example.com/some-article/

您将如何使用 .htaccess 文件进行这个简单的 .net -> .com 重定向?任何规则都应适用于 .net 域下的所有 URL。

提前致谢。


编辑:我已经在服务器上有 .htaccess 文件:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

AddHandler php5-script .php

【问题讨论】:

    标签: wordpress url .htaccess url-rewriting


    【解决方案1】:

    旧域:RewriteCond %{HTTP_HOST} !^abcd.com$ [NC]

    新域:RewriteRule ^(.*)$ http://abcdef.com/$1 [R=301,L]

    我敢打赌,如果你把它放在你的旧域中,然后简单地将第二行更改为你的新域,使用你的新域,它会起作用。

    【讨论】:

      【解决方案2】:

      我会将您现有的重写块修改为如下所示:

      # BEGIN WordPress
      <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /
      
      # New code to redirect from example.net to example.com
      # Permanent redirect for caching purposes, also include the query string
      RewriteCond %{HTTP_HOST} ^example\.net
      RewriteRule (.*) http://example.com/$1 [R=permanent,QSA,L]
      
      # New code to redirect from www.example.net to www.example.com
      RewriteCond %{HTTP_HOST} ^www\.example\.net
      RewriteRule (.*) http://www.example.com/$1 [R=permanent,QSA,L]
      
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule . /index.php [L]
      </IfModule>
      
      # END WordPress
      
      AddHandler php5-script .php
      

      请注意,我还没有实际测试过这个......

      REMOTE_HOST 也可以代替HTTP_HOST 工作。 mod_rewrite documentation 推荐使用HTTP_HOST,尽管如果浏览器只理解 HTTP/1.0,这将不起作用

      【讨论】:

        【解决方案3】:

        我不久前从 Drupal 转换为 WordPress,最后我花了很多时间试图让这些重定向正常工作。我最大的问题是弄清楚如何将 RewriteCond 与 RewriteRule 结合使用。这是我写的一篇文章的摘录:

        
        # Rewrite drupal urls to worpress
        RewriteCond %{QUERY_STRING} ^q=node/(.+)$
        RewriteRule ^(.*)$ http://blog.componentoriented.com/?p=%1 [R=301,L]
        
        # Forward RSS feed
        RewriteCond %{QUERY_STRING} ^q=rss.xml$
        RewriteRule ^(.*)$ http://blog.componentoriented.com/?feed=rss2 [R=301,L]
        RewriteCond %{QUERY_STRING} ^q=atom/feed$
        RewriteRule ^(.*)$ http://blog.componentoriented.com/?feed=rss2 [R=301,L]
        

        密切关注入站点击和链接以查看是否有人使用您尚未翻译的旧形式的 URL 也很有帮助。我有一个被编码为 PostNuke URL 的入站链接(来自两个博客平台之前!),这种技术使它非常容易修复。

        这是我文章的链接,顺便说一句:Use .htaccess to redirect from Drupal to Wordpress

        【讨论】:

          【解决方案4】:

          您需要将这样的命令添加到您的 .htaccess 文件中:

          重定向永久/some-article/ http://www.example.com/some-article/

          这是一个带有 mod_rewrite 的服务器吗?在这种情况下,您可以对所有路径进行通用重定向:

          RewriteEngine On
          
          RewriteRule ^(.*)$ http://www.example.com/$1 [R=301]
          

          【讨论】:

          • 如果我将它添加到我的 .htaccess 文件中(在已编辑的原始问题中查看),就在 RewriteRule 下,我会得到一个重定向循环。
          • 尝试删除旧的 mod_rewrite 命令,看看这是否解决了循环问题。否则:它循环通过什么 URL?一种判断方法是在你的 linux 控制台中输入“wget example.net/some-article”。
          • +1 为简单起见。还认为您需要推动才能获得超过 5000 分! ;) 呵呵。
          猜你喜欢
          • 2017-05-18
          • 2020-05-04
          • 2016-03-26
          • 1970-01-01
          • 1970-01-01
          • 2011-06-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多