停放域通配符301重定向

时间:2011-03-22 19:17:10

标签: .htaccess mod-rewrite redirect http-status-code-301

我有一系列域名停放在LAMP服务器上的帐户上,并且mod_rewrite可以执行。我想实现以下目标:

我正在寻找domain1.com成为“主人” - 这个想法是应该有以下重定向(具有301状态以获得最大的SEO效益):

  

domain2.com重定向到domain1.com
  domain3.com重定向到domain1.com
  domain2.com/foo/重定向到   domain1.com/foo/domain3.com/foo/   重定向到domain1.com/foo/
  domain2.com/foo/bar/重定向到   domain1.com/foo/bar/
  domain3.com/foo/bar/重定向到   domain1.com/foo/bar /

等等......

实际上,我想在混合中实现某种通配符,以便/ foo /和/ bar /的子页面也被重定向到domain1.com上的相同URL

我一直在寻找相关的.htaccess文档的高低,但似乎找不到我想要的解决方案。因此,我想知道你们中是否有人可能会有一些指示 - 非常感谢:)

2 个答案:

答案 0 :(得分:2)

如果您的所有域都停放在同一主机上,则以下规则适用于您:

Options +FollowSymlinks -MultiViews
RewriteEngine on

# handles domain2/* -> domain1/* for http
RewriteCond %{HTTP_HOST} ^(www\.)?domain2.com$ [NC]
RewriteCond %{SERVER_PORT} =80
RewriteRule ^(.*)$ http://domain1.com/$1 [R=301,L]

# handles domain2/* -> domain1/* for https
RewriteCond %{HTTP_HOST} ^(www\.)?domain2.com$ [NC]
RewriteCond %{SERVER_PORT} =443
RewriteRule ^(.*)$ https://domain1.com/$1 [R=301,L]

# handles domain3/* -> domain1/* for http
RewriteCond %{HTTP_HOST} ^(www\.)?domain3.com$ [NC]
RewriteCond %{SERVER_PORT} =80
RewriteRule ^(.*)$ http://domain1.com/$1 [R=301,L]

# handles domain3/* -> domain1/* for https
RewriteCond %{HTTP_HOST} ^(www\.)?domain3.com$ [NC]
RewriteCond %{SERVER_PORT} =443
RewriteRule ^(.*)$ https://domain1.com/$1 [R=301,L]

将它们放入DOCUMENT_ROOT的.htaccess文件中。

答案 1 :(得分:1)

对于domain2.com和domain3.com中的每一个,您需要一个看起来像这样的.htaccess:

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