利用htaccess给虚拟主机绑定多个域名对应不同子目录

我的博客和GeoServer中文社区一直在同一个虚拟主机下,一直以来都是做了跳转,www.guoweiwei.com访问的话跳转到http://www.guoweiwei.com/wordpress,opengeo.cn域名访问的话跳转到http://opengeo.cn/dz

昨天找了一个方案给解决了,不用跳转,www.guoweiwei.com就直接访问wordpress下面的内容,opengeo.cn直接访问dz下面的内容,不用带子目录了。

apache+php的主机通常解决有两种方案解决这个问题,一种是利用apache的virtualhost,一种便是利用apache的htaccess。万网的虚拟主机不支持前一种,只好利用htaccess了。

下面就直接贴代码了

# 将 RewriteEngine 模式打开
RewriteEngine On
.
RewriteCond %{HTTP_HOST} ^(www.)?opengeo.cn$
RewriteCond %{REQUEST_URI} !^/dz/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /dz/$1
RewriteCond %{HTTP_HOST} ^(www.)?opengeo.cn$
RewriteRule ^(/)?$ dz/index.php [L]

RewriteCond %{HTTP_HOST} ^(www\.)?guoweiwei\.(com|cn)$
RewriteCond %{REQUEST_URI} !^/wordpress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /wordpress/$1
RewriteCond %{HTTP_HOST} ^(www\.)?guoweiwei\.(com|cn)$
RewriteRule ^(/)?$ wordpress/index.php [L]

对上面的指令做一下简单的解释:
RewriteCond指令定义了规则生效的条件,在一个RewriteRule指令之前可以有一个或多个RewriteCond指令,这些指令指明了要执行RewriteRule必须满足的条件。
RewriteRule就不解释了,就是具体的规则