目前我已经使用如下通配符子域配置:
<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 将返回默认虚拟主机。如何配置到主/根域的路径?我在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 仍然不起作用。
什么是正确的语法?
经过几个小时的解决方法,实际上上面的代码有正确的语法,但我只是把它放在错误的位置顺序。所以正确的答案是把第二个放在第一个上面。
下面是完整的配置示例:
Apache 通过从顶部升序跳过相同的子域/域配置。sub.sub.domain 也是 *.domain 的一部分,所以如果我想配置它,我必须将配置放在顶部,或者如果使用不同的文件配置使用较小的数字名称。