所以我设置了一个虚拟主机,并将其作为我的文档根目录
VirtualDocumentRoot "/sites/%1+/www"
一切都很好但这一件事一直在杀我。有谁知道%1 +是什么意思?有人可能会完全破坏它是什么以及它是如何工作的。我理解它指的是服务器在哪里看,但%1+
在做什么?
答案 0 :(得分:1)
阅读文档:http://httpd.apache.org/docs/2.2/mod/mod_vhost_alias.html
此模块中的所有指令都将字符串插入到a中 路径名。插值字符串[...]可以是服务器名称 [...]或服务器上虚拟主机的IP地址 点分四格式。插值由说明符控制 灵感来自printf,它有多种格式:
[...] %N.M insert (part of) the name
N和M用于指定名称的子字符串。 N从中选择 名称的点分隔组件,M选择其中的字符 无论N选择了什么。 M是可选的,如果是,则默认为零 不存在;当且仅当M存在时,该点必须存在。 解释如下:
0 the whole name 1 the first part [...] 2+ the second and all subsequent parts [...]
对于大量虚拟主机,最好安排 减少vhosts目录大小的文件。要做到这一点你 可能会在配置文件中使用以下内容:
UseCanonicalName Off VirtualDocumentRoot /usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2
http://www.domain.example.com/directory/file.html的请求会 对文件感到满意 /usr/local/apache/vhosts/example.com/d/o/m/domain/directory/file.html。
所以,在
VirtualDocumentRoot "/sites/%1+/www"
请求
www.example.com
会解决
/sites/www.example.com/www