htaccess重定向所有内容,包括子域

时间:2011-12-30 12:23:41

标签: .htaccess redirect

对于同一个网络应用,我有3个域名,因为我不希望有重复的内容,我想将其他两个域名重定向到主域名。

如果用户输入client_xyz.domain2.com,则应将其重定向到client_xyz.primarydomain.com

如果用户输入client_xyz.domain2.com/folder/file/etc,则应将其重定向到client_xyz.primarydomain.com/folder/file/etc

如果用户输入domain2.com/test/page,则应将其重定向到primarydomain.com/test/page

我认为这是避免Google因重复内容而受到惩罚的最佳解决方案。 如果您认为有更好的解决方案(例如DNS),请告诉我。

3 个答案:

答案 0 :(得分:2)

将此代码放入.htaccess文件中:

Options +FollowSymLinks -MultiViews
RewriteEngine on

RewriteOptions MaxRedirects=10

RewriteCond %{HTTP_HOST} ^(client_xyz\.)?domain2\.com$ [NC]
RewriteRule ^ http://%1primarydomain.com%{REQUEST_URI} [NE,R=301,L]

答案 1 :(得分:0)

您可以在.htaccess文件中使用正则表达式,因此请设置301(永久移动)重定向。

RedirectMatch 301 (^.*?\.|^)domain2.com(.*) $1.primarydomain.com$2

未经测试,但应该没问题。

[编辑]自从您的评论以来,下面的内容相当无用,但无论如何我都会留在这里。

或者,您可以在Apache配置文件中设置服务器别名。你可能有这样的事情:

ServerName primarydomain.com
DocumentRoot /var/www/html/mysite/
<Directory "/var/www/html/mysite/">
    AllowOverride All
</Directory>

将其更改为:

ServerName primarydomain.com
ServerAlias domain2.com
DocumentRoot /var/www/html/mysite/
<Directory "/var/www/html/mysite/">
    AllowOverride All
</Directory>

答案 2 :(得分:0)

如果你可以使用mod_rewrite,这应该有效:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} (^.*?\.|^)?domain2\.com
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ([a-z0-9-]+)/? http://$1.primarydomain.com [R=301,NC,L]

如果没有,那么,我可能不得不把它留给比我聪明的人; - )