如何在 Apache VirtualDocumentRoot 中使用文字“。”

如何在 Apache VirtualDocumentRoot 中使用文字“。”

我在 Apache 2.4 中苦苦挣扎VirtualDocumentRoot-我想要一个值,将 TLD 从请求的域更改为不同的域,以映射到磁盘上的文档根目录:

User request: https://one.example.net
Doc root: /var/www/one.example.com

我尝试了各种选项,但 Apache 总是抱怨语法。我最好的猜测是VirtualDocumentRoot /var/www/%-2+%.com。在伪代码中应该这样写/var/www/, "the penultimate and all preceding parts of the domain", escape character, period, "com"

我猜我的错误在于转义字符。要么是错误的,要么就是根本没有转义字符,而%%给出文字 % 是一种特殊情况。

有人可以建议一个可行的解决方案吗?

答案1

令人沮丧的是,我在官方文档中找到了答案 - 显然我读得不够仔细......最后的例子说:

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 /var/www/%-2+.0.com。我的解释是,使用.0子字符串变量“关闭”变量,允许使用文字.

答案2

你有没有尝试过:

VirtualDocumentRoot /var/www/%-2+\.com

相关内容