我正在运行 Debian 上预装的 apache2 Web 服务器。Apache 配置主机文件是:
<VirtualHost *:80>
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/error.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName sub1.domain.com
ServerAlias www.sub1.domain.com
DocumentRoot /var/www/sub1/public_html
DirectoryIndex sub1.php
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/error.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName sub2.domain.com
ServerAlias www.sub2.domain.com
DocumentRoot /var/www/sub2/public_html
DirectoryIndex sub2.php
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/error.log combined
</VirtualHost>
apachectl -S
输出:
VirtualHost configuration:
*:80 is a NameVirtualHost
default server domain.com (/etc/apache2/sites-enabled/domain.com.conf:1)
port 80 namevhost domain.com (/etc/apache2/sites-enabled/domain.com.conf:1)
alias www.domain.com
port 80 namevhost sub1.domain.com (/etc/apache2/sites-enabled/domain.com.conf:10)
alias www.sub1.domain.com
port 80 namevhost sub2.domain.com (/etc/apache2/sites-enabled/domain.com.conf:19)
alias www.sub2.domain.com
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex default: dir="/var/run/apache2/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: 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
domain.com
加载预装的默认 index.html 文件/var/www/html/index.html
(预期)
sub1.domain.com
加载sub1.php
。(预期)
sub2.domain.com
在 处加载默认索引文件/var/www/html/index.html
。我可以将目标文件sub2.php
作为目录访问:sub2.domain.com/sub2.php
我怎样才能让我的第二个子域遵守 DirectoryIndex 指令,并加载sub2.php
我的导航到sub2.domain.com
?
答案1
我不知道发生了什么变化,但是今天早上(发布这个问题的第二天)它正在按预期加载 DirectoryIndex。
这可能是 Apache 的一个错误,具体来说就是它在重新加载时如何处理更改的 DirectoryIndex。为了方便以后使用,我使用 systemd 重新加载 apache 配置。