Apache HTTPD虚拟主机,文档根目录中的%1 +是什么?

时间:2014-03-15 08:18:02

标签: apache virtualhost

所以我设置了一个虚拟主机,并将其作为我的文档根目录

VirtualDocumentRoot "/sites/%1+/www"

一切都很好但这一件事一直在杀我。有谁知道%1 +是什么意思?有人可能会完全破坏它是什么以及它是如何工作的。我理解它指的是服务器在哪里看,但%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