0

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

  • https://oblik.dev/foo.html>/var/www/oblik.dev/foo.html
  • https://test.oblik.dev/foo.html>/var/www/test.oblik.dev/foo.html
  • ...

我启用了mod_vhost_alias并且我有一个 VirtualHost 在/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>

这是的输出apache2ctl -S

VirtualHost configuration:
*:443                  46.101.237.154 (/etc/apache2/sites-enabled/main.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex ssl-stapling: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/var/run/apache2/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
Mutex ssl-stapling-refresh: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

这是输出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域的方式略有不同,因为它强制执行 SSL,但我已经通过 Let's Encrypt 设置了带有通配符域的 SSL 证书,所以这应该不是问题。

我错过了什么?

4

1 回答 1

0

问题是 Apache 使用%名称插值而不是$像 Regex 那样。我不得不改变这个:

VirtualDocumentRoot /var/www/$0

...对此:

VirtualDocumentRoot /var/www/%0
于 2020-03-18T07:49:49.113 回答