我希望从旧域迁移到新域。
我的旧域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
时,它不会重定向站点答案 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]