将所有请求从旧域重定向到新域

Posted

技术标签:

【中文标题】将所有请求从旧域重定向到新域【英文标题】:Redirect all request from old domain to new domain 【发布时间】:2013-10-21 19:59:01 【问题描述】:

我希望从旧域迁移到新域。

我的旧域 olddomain.com 和新域 newdomain.com 现在指向相同的 IP 地址。

我有 Apache 服务器来处理请求。

我怎么301 redirect我所有的

olddomain.com/*

&

www.olddomain.com/*

newdomain.com/*

我能否获得需要在htaccess 中添加的确切正则表达式或配置。

我的 newdomain.com 和 olddomain.com 都由来自同一个 IP 的同一个 apache 提供服务,所以“/”重定向可能会导致循环?所以一直在寻找有效的方法

我试过了

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %HTTP_HOST ^localhost$ [OR]
    #  RewriteCond %HTTP_HOST ^www.olddomain.com$
    RewriteRule (.*)$ http://comp16/$1 [R=301,L]
</IfModule>

甚至尝试添加虚拟主机

RedirectMatch (.*)\.jpg$ http://comp17$1.jpg 

但是当我在浏览器中点击 localhost 到我的计算机名称时它不会重定向站点,即 comp16

【问题讨论】:

问谷歌会比在这里添加问题更快。 ;-) 这会将新旧域的所有请求重定向到新域,但我只需要将旧域 url 重定向到新域。这不是与谷歌通常提出的问题不同的问题吗? 使用mod_rewrite 运行时,我建议您启用RewriteLog 以查看实际发生的情况。 【参考方案1】:

我还建议使用 If 语句,因为您也可以在多站点服务器中使用它。只需输入:

<If "%HTTP_HOST == 'old.example.com'">
    Redirect "/" "https://new.example.com/"
</If>

【讨论】:

【参考方案2】:

在每个 olddomain.com 主机的配置 (VirtualHost) 中尝试以下操作:

Redirect permanent / http://newdomain.com/

Apache documentation for Redirect。当一切都应该被重定向时,这是首选方式。如果您必须使用mode_rewrite/htaccess,那么在 SO 上有很多关于此的问题,其中之一是:

How do I 301 redirect one domain to the other if the first has a folder path

编辑 Apache 对simple redirects 的推荐:

mod_alias provides the Redirect and RedirectMatch directives, which provide a means to
redirect one URL to another. This kind of simple redirection of one URL, or a class of 
URLs, to somewhere else, should be accomplished using these directives rather than 
RewriteRule. RedirectMatch allows you to include a regular expression in your 
redirection criteria, providing many of the benefits of using RewriteRule.

【讨论】:

问题我觉得我的新域和旧域都被同一个 apache 查看这样的重定向是否足够公平? 当然,就性能而言,它比启动mod_rewrite 并重写东西要好。但我想这主要取决于您使用的舒适度。然而,对于这类事情的建议是使用Redirect 而不是RewriteRule【参考方案3】:

将以下代码写入您的 .htaccess 中,它将所有旧域请求重定向到新域。

RewriteEngine on
RewriteBase /
RewriteRule (.*) http://newdomain.com/$1 [R=301,L]

【讨论】:

这会将新旧域的所有请求重定向到新域,但我只需要将旧域 url 重定向到新域。

以上是关于将所有请求从旧域重定向到新域的主要内容,如果未能解决你的问题,请参考以下文章

如果用户已缓存站点,如何将用户从旧域重定向到新域

apache_conf 从旧域重定向到新域

htaccess 将旧域重定向到新域

在 .htaccess 中使用 HTTPS 将旧域重定向到新域

HTACCESS-将旧域重定向到新域

301 重定向没有子目录/查询字符串