Apache 2.4 中的子域名的通配符子域名

Apache 2.4 中的子域名的通配符子域名

目前我已经完成了如下的通配符子域名配置:

<VirtualHost *:80>
    ServerAlias *.domain
    ErrorLog /tmp/error.log
    CustomLog /tmp/access.log combined
    VirtualDocumentRoot /var/www/%1/public
<Directory "/var/www">
    DirectoryIndex index.php
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
</VirtualHost>

但如果我输入 sub.sub.domain 将返回默认 vhost。如何配置主/根域的路径?我尝试了下面的 conf 但仍然不起作用:

<VirtualHost *:80>
    ServerAlias *.*.domain
    ErrorLog /tmp/error.log
    CustomLog /tmp/access.log combined
    VirtualDocumentRoot /var/www/%2/public
<Directory "/var/www">
    DirectoryIndex index.php
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
</VirtualHost>

我将 %2 改为 %1 仍然不起作用。

什么是正确的语法?

答案1

经过几个小时的反复尝试,上面的代码其实语法正确,只是我把代码的放置顺序搞错了。所以正确的答案是把第二个放在第一个的上方。

以下是完整配置示例:

<VirtualHost *:80>
    ServerAlias *.*.domain
    ErrorLog /tmp/error.log
    CustomLog /tmp/access.log combined
    VirtualDocumentRoot /var/www/%2/public
<Directory "/var/www">
    DirectoryIndex index.php
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerAlias *.domain
    ErrorLog /tmp/error.log
    CustomLog /tmp/access.log combined
    VirtualDocumentRoot /var/www/%1/public
<Directory "/var/www">
    DirectoryIndex index.php
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
</VirtualHost>

Apache 从顶部按升序跳过相同的子域/域配置。 sub.sub.domain 也是 *.domain 的一部分,所以如果我想配置它,我必须将配置放在顶部,或者如果使用不同的文件配置,则使用较低的数字名称。

相关内容