Apache VirtualHost中带有SSL的VirtualDocumentRoot将导致404响应

Apache VirtualHost中带有SSL的VirtualDocumentRoot将导致404响应,apache,mod-vhost-alias,Apache,Mod Vhost Alias,我正在尝试配置一个非常基本的服务器设置,其中域从它们自己的目录提供服务。例如: https://oblik.dev/foo.html/var/www/oblik.dev/foo.html https://test.oblik.dev/foo.html/var/www/test.oblik.dev/foo.html 我已经启用并且在/etc/apache2/sites available/main.conf中有一个虚拟主机: <VirtualHost *:443> SSL

我正在尝试配置一个非常基本的服务器设置,其中域从它们自己的目录提供服务。例如:

  • https://oblik.dev/foo.html
    /var/www/oblik.dev/foo.html
  • https://test.oblik.dev/foo.html
    /var/www/test.oblik.dev/foo.html
我已经启用并且在
/etc/apache2/sites available/main.conf
中有一个虚拟主机:

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/oblik.dev/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/oblik.dev/privkey.pem

    UseCanonicalName Off
    VirtualDocumentRoot /var/www/$0
    ServerAlias *.dev

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
下面是
ls-al/var/www/
的输出:

total 16
drwxr-xr-x  4 root     root     4096 Mar 18 06:19 .
drwxr-xr-x 14 root     root     4096 Mar 17 06:54 ..
drwxr-xr-x  2 www-data www-data 4096 Mar 17 09:30 ikarov.oblik.dev
drwxr-xr-x  2 www-data www-data 4096 Mar 18 07:14 oblik.dev
我在两个目录中都有一个
index.php
,其权限与其文件夹相同

当我打开
https://oblik.dev
,我有一个404。
https://ikarov.oblik.dev
。但是,如果我将
VirtualDocumentRoot
替换为常规的
DocumentRoot
,服务器将按预期工作


我知道Chrome处理
.dev
域的方式有点不同,但我已经通过Let's Encrypt设置了一个带有通配符域的SSL证书,所以这应该不是问题


我缺少什么?

问题是Apache使用
%
进行名称插值,而不是像Regex那样使用
$
。我必须改变这一点:

VirtualDocumentRoot /var/www/$0
……为此:

VirtualDocumentRoot /var/www/%0
VirtualDocumentRoot /var/www/%0