我有2个带有和没有www前缀的域名。当用户访问这些域中的任何域时,我希望它自动重新路由到所选择的域中。
例如:
domain.com
www.domain.com
domain.co.uk
www.domain.co.uk
当用户访问www.domain.com
,domain.co.uk
或www.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个域重新划分为一个单独的块并在那里处理它们,但是真的不确定如何完成我需要的所有规则。
答案 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 - 这基本上会指示浏览器和搜索引擎缓存重定向。