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

时间:2013-10-14 09:22:52

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

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

我的旧域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

时,它不会重定向站点

3 个答案:

答案 0 :(得分:16)

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

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.

答案 1 :(得分:1)

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

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

答案 2 :(得分:-3)

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

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