使用通配符为域和文档根目录设置 vhost 别名 - 文档根目录解析不正确

使用通配符为域和文档根目录设置 vhost 别名 - 文档根目录解析不正确

我对这个问题中应该使用的正确术语只有一个模糊的概念,所以请随时帮助我澄清一下。

我有一个 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,这是我所期望的),但无论如何,更改为正确的句柄可以解决问题。

相关内容