Apache 的域通配符配置,匹配 FQDN 的中间部分

Apache 的域通配符配置,匹配 FQDN 的中间部分

我有一个使用 apache 通配符的开发设置,我的设置如下例所示。

  • 客户有一个类似 fancy-company.org 的域名
  • 我拥有一个 testing.com 域名,用于测试/声明。
  • 暂存网址为 fancy-company.org.testing.com

在我的 apache 配置中我使用这个配置,效果很好。

    ServerAlias *.testing.com
    VirtualDocumentRoot /var/www/%-3+/public_html

匹配 (fancy-company.org).testing.com。现在我想在过程中包含 www。子域名,因为如果一些客户习惯用 www 输入他们的域名,他们会感到困惑。

所以我需要一个与 www.(fancy-company.org).testing.com 匹配的版本

    ServerAlias www.*.testing.com
    VirtualDocumentRoot /var/www/%2-3/public_html

域名 www.fancy-company.org.testing.com 已被 Virtualhost 捕获,但 Documentroot 未被转换,fancy-company.org %2-3似乎无法正常工作。

示例位于https://httpd.apache.org/docs/2.4/mod/mod_vhost_alias.html如果不涉及这个案例我就搞不清楚了。

VirtualDocumentRoot 应该与以前的设置中相同的文件夹匹配:fancy-customer.com

答案1

在您最初的配置中,您在 中使用了一个负数VirtualDocumentRoot。这很好,因为根据文档,负数从 TLD 开始向后计数,因此无论是否使用 ,它都会匹配www

该域名www.fancy-company.org.testing.com将被解释如下:

-1: com
-2: testing
-3: org
-4: fancy-company
-5: www

与您相关的部分是 -3 和 -4。但是,我们不能使用%-4.%-3,因为点被解释为子字符串。因此,我们的最终VirtualDocumentRoot字符串应该是:

VirtualDocumentRoot /var/www/%-4.0.%-3.0/public_html

相关内容