2016-03-23 160 views
1

我有多个旧域需要根据这些规则重定向到一个新域, 要么到新域中的特定文件夹或相同的url参数:使用htaccess将旧域重定向到新域根或目录

  1. olddomain1.com/ - >重定向到newdomain.com/a
  2. olddomain1.com/parameter=x - >重定向到newdomain.com/parameter=x

  3. olddomain2.com/- >重定向到newdomain.com/b

  4. olddomain2.com/parameter=x - >重定向到newdomain.com/parameter=x

到目前为止,我有这样的代码:

RewriteCond %{HTTP_HOST} ^olddomain1\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.olddomain1\.com$ 
RewriteRule ^/?$ "http\:\/\/www\.newdomain\.com\/$1" [R=301,L] 
RewriteRule ^$ /a 

RewriteCond %{HTTP_HOST} ^olddomain2\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.olddomain2\.com$ 
RewriteRule ^/?$ "http\:\/\/www\.newdomain\.com\/$1" [R=301,L] 
RewriteRule ^$ /b 

问题是,如果试图加载 http://www.olddomain2.com/ 它发送给我 http://www.newdomain.com/a

你能帮助解决此代码正常工作吗? 感谢

回答

1

您可以使用这些规则:

##Redirect "domain1.com" to "/a"## 
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain1\.com$ 
RewriteRule ^$ http://www.newdomain.com/a [R,L] 
##Redirect "domain1.com/foo" to "newdoamain/foo"## 
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain1\.com$ 
RewriteRule ^(.+)$ http://www.newdomain.com/$1 [R,L] 
##Redirect "domain2.com" to "/a"## 
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain2\.com$ 
RewriteRule ^$ http://www.newdomain.com/b [R,L] 
##Redirect "domain2.com/foo" to "newdoamain/foo"## 
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain2\.com$ 
RewriteRule ^(.+)$ http://www.newdomain.com/$1 [R,L] 
+0

作品。谢谢 !我应该添加[R = 301,L]而不是[R,L]吗? – buzibuzi

+1

** R **是默认使用302状态码的临时重定向,您可以将** R **更改为** R = 301 **来进行重定向permament。 – starkeen

相关问题