使用apache2 / htaccess将备用域重定向/重写到根域

时间:2016-02-06 10:36:09

标签: apache .htaccess redirect mod-rewrite dns

我有2个带有和没有www前缀的域名。当用户访问这些域中的任何域时,我希望它自动重新路由到所选择的域中。

例如:

domain.com
www.domain.com
domain.co.uk
www.domain.co.uk

当用户访问www.domain.comdomain.co.ukwww.domain.co.uk时,会重写为domain.com

到目前为止,我的apache2虚拟主机块设置如下:

<VirtualHost *:80>
  ProxyPass / http://localhost:3060/
  ProxyPassReverse / http://localhost:3060/
  ServerName domain.com
  ServerAlias www.domain.com
  ServerAlias domain.co.uk
  ServerAlias www.domain.co.uk
</VirtualHost>

但这不会重写/重新路由。我还需要确保它考虑到任何路径。例如,www.domain.co.uk/test将更改为domain.com/test

我是如何在虚拟主机块中完成此操作的?我假设我将3个域重新划分为一个单独的块并在那里处理它们,但是真的不确定如何完成我需要的所有规则。

1 个答案:

答案 0 :(得分:1)

根据您的评论,您希望将三个别名重定向到主域,并且您已声明要在虚拟主机配置中执行此操作。

<VirtualHost *:80>
    ...

    RewriteEngine on

    # If using one of the aliases ...
    RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [OR]
    RewriteCond %{HTTP_HOST} ^(www\.)?domain\.co\.uk

    # ... redirect to the main domain
    RewriteRule ^(.*)$ http://domain.com/$1 [R=302,L]
</VirtualHost>

您还可以在域Rewrite*文件中添加.htaccess指令。

要使重定向成为永久性,请将302更改为301 - 这基本上会指示浏览器和搜索引擎缓存重定向。