13

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

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

4

3 回答 3

18

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

Redirect permanent / http://newdomain.com/

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

如果第一个域有文件夹路径,我如何 301 将一个域重定向到另一个域


来自 Apache 的关于简单重定向的编辑建议:

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.
于 2013-10-14T09:33:54.533 回答
2

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

<If "%{HTTP_HOST} == 'old.example.com'">
    Redirect "/" "https://new.example.com/"
</If>
于 2021-05-12T12:44:25.690 回答
-3

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

RewriteEngine on
RewriteBase /
RewriteRule (.*) http://newdomain.com/$1 [R=301,L]
于 2013-10-14T10:51:32.807 回答