我希望从旧域迁移到新域。
我的旧域名
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)时,它不会重定向站点
在每个
VirtualHost
主机的配置 (olddomain.com
) 中尝试以下操作:
Redirect permanent / http://newdomain.com/
Apache 重定向文档。当一切都应该重定向时,这是首选方式。如果您必须使用
mode_rewrite/htaccess
,那么关于此问题有很多问题,其中之一是:
如果第一个域有文件夹路径,如何 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.
我还建议使用 If 语句,因为您也可以在多站点服务器中使用它。只需输入:
<If "%{HTTP_HOST} == 'old.example.com'">
Redirect "/" "https://new.example.com/"
</If>
这个应该可以做到:
在根 Web 目录中创建文件 .htaccess。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)?$ http://newcomain.com/$1 [R=301,L]
</IfModule>
它将所有带有参数的请求重定向到新服务器
将以下代码写入您的 .htaccess,它会将您所有的旧域请求重定向到新域。
RewriteEngine on
RewriteBase /
RewriteRule (.*) http://newdomain.com/$1 [R=301,L]