.htaccess重定向到新域名

时间:2015-08-08 04:50:12

标签: apache .htaccess mod-rewrite

我想将现有域名重定向到新域名(机器人站点结构相同)我试过跟随.htaccess

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

我的问题是,如果我尝试

  

olddomain.com/login.php

重定向到

  

newdomain.com/public_html/login.php

哪个无法正常工作..任何人都可以帮忙修复它。

(注意:如果我只尝试使用域名,则会完全重定向到新域名)

3 个答案:

答案 0 :(得分:3)

只需将新域指向站点根文件夹,而不是服务器根文件夹。

答案 1 :(得分:2)

然后你可以使用这个RewriteRule指令:

RewriteRule ^public_html/(.*)$ http://www.newdomain.com/$1 [R=301,L]

除了" public_html /" 之外,它只会反向引用正则表达式(.*)

很高兴看到解决您问题的完整指令。无论如何,您可以通过替换以下3行来改进和优化它们:

RewriteCond %{HTTP_HOST} ^olddomain\.tld$ [OR]
RewriteCond %{HTTP_HOST} ^www\.olddomain\.tld$
RewriteRule ^(.*)$ "http\:\/\/www\.newdomain\.tld\/$1" [R=301,L]

这两行:

RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.tld$
RewriteRule ^(.*)$ http://www.newdomain.tld/$1 [R=301,L]

在我看来,这是写它们的完美方式..

答案 2 :(得分:1)

在与服务提供商讨论后,根据他们的指示我使用了以下代码,它完美地工作(根据他们的虚拟专用服务器的信息是特殊情况)

感谢所有努力解决我的问题的人

RewriteEngine on
RewriteOptions inherit
RewriteCond %{HTTP_HOST} ^olddomain\.tld$ [OR]
RewriteCond %{HTTP_HOST} ^www\.olddomain\.tld$
RewriteRule ^(.*)$ "http\:\/\/www\.newdomain\.tld\/$1" [R=301,L]