我对这个问题中应该使用的正确术语只有一个模糊的概念,所以请随时帮助我澄清一下。
我有一个 vhost 设置。我的想法是使用通配符将所有请求路由root.TERM.lh
到/TERM/
文档根目录。
下面的设置可以很好地识别域并相应地路由它们,但它不会将文档根目录中的 %1 转换为 TERM。例如,Apache 错误日志告诉我,对于对 root.mywebsite.lh 的请求,它试图路由到/Users/hollsk/Dev/websites/%1
,因此它将其解释为文字字符串。
我的语法不正确,或者我缺少一些模块?
NameVirtualHost *
<VirtualHost *>
ServerName root.%1.lh
ServerAlias root.%1.lh
DocumentRoot /Users/hollsk/Dev/websites/%1/
</VirtualHost>
答案1
这种配置风格需要使用附加模块,而不是核心虚拟主机指令。
请参阅此处的 VirtualDocumentRoot:http://httpd.apache.org/docs/2.2/mod/mod_vhost_alias.html
答案2
我的语法有一点不正确。
NameVirtualHost *
<VirtualHost *>
ServerName root.%2.lh
ServerAlias root.%2.lh
DocumentRoot /Users/hollsk/Dev/websites/%2/
</VirtualHost>
注意%2
,而不是%1
- 仍然不确定为什么%1
被按字面意思解释(而不是字符串root
,这是我所期望的),但无论如何,更改为正确的句柄可以解决问题。