apache单域名动态vhost目录指定
作者:admin 发布时间:April 12, 2008 分类:默认
使用模块mod_vhost_alias
mod_vhost_alias这个模块能实现很方便的动态域名绑定从而实现动态虚拟主机自动开设。
%* 这里的* 是指域名(new.www.domain.com) 以.的分割 %1 指代第一个new ,%2指代www ,%0指代全部new.www.domain.com
不过单纯按顺序的话,不好判断这个是哪个域名状态,不过可以倒过来用 %-1 指代com, %-2指代domain 这样就很容易判断域名了。
VirtualDocumentRoot /vhost/%-2.0.%-1/%-3 这样就表示 /vhost/domain.com/www
这里要说明一下,由于.的特殊性,其中要引用.的话,必须要采用.0.这样的补全方式(不知道我的说法贴不贴切)。
下面是文档的原文说明和例子:
If you want to include the . character in a VirtualDocumentRoot directive, but it clashes with a % directive, you can work around the problem in the following way:
VirtualDocumentRoot /usr/local/apache/vhosts/%2.0.%3.0
将VirtualDocumentRoot置于VirtualHost下,其影响就只在当前域名下,从而可以仅对当前域名实现动态主机。
<VirtualHost *:80>
ServerName xx.com
ServerAlias *.xx.com
VirtualDocumentRoot /www/%-2.0.%-1/%-3
</VirtualHost>
上面在指定域名下其实没必要用%-2.0.%-1表示,直接用xx.com就一了。
通过上面的VirtualDocumentRoot 动态指定,现在xx.com开设2级域名只需要建立相应的文件夹就能自动绑定了,无需重新启动apache。
当然用%-3似乎简单了点,你可以加点修饰在上面,这样更容易识别。
上面的例子下如果用xx.com来访问,也就是不存在%-3这个项目,经过测试默认会访问 /www/xx.com/_ 是个“_”, 我win下的apache是这样工作的,其它的不知道。
估计的查的资料不足,我没能知道在动态方式怎么样将www.xx.com和xx.com指向到同一个目录。