![为什么 apache 总是重定向到默认的 VirtualHost?](https://linux22.com/image/738358/%E4%B8%BA%E4%BB%80%E4%B9%88%20apache%20%E6%80%BB%E6%98%AF%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E9%BB%98%E8%AE%A4%E7%9A%84%20VirtualHost%EF%BC%9F.png)
我在 centOS7.6 上使用 apache 2.4,我想有一个子域和主域,它们都显示不同的内容。我配置了两个 VirtualHosts,它们都位于 /etc/httpd/conf.d/ 中的不同文件中
例如.com.conf
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html/example.com/
</VirtualHost>
和 subdomain.example.com.conf
<VirtualHost *:80>
ServerName subdomain.example.com
DocumentRoot /var/www/html/subdomain.example.com/
</VirtualHost>
问题是,无论我访问哪个域,我都会从默认 VirtualHost(按字母顺序排列的第一个)获取文件。我尝试将 /var/www/ 的权限更改为 777、禁用 selinux、将操作系统切换到 fedora30 以及一些小操作。
主httpd.conf:
ServerRoot "/etc/httpd"
Listen 80
Include conf.modules.d/*.conf
ServerAdmin [email protected]
<Directory />
AllowOverride none
Require all denied
</Directory>
DocumentRoot "/var/www/html"
<Directory "/var/www">
AllowOverride None
Require all granted
</Directory>
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<IfModule dir_module>
DirectoryIndex index.php
</IfModule>
<Files ".ht*">
Require all denied
</Files>
ErrorLog "logs/error_log"
LogLevel warn
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %v" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog "logs/access_log" combined
</IfModule>
<IfModule alias_module>
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
<IfModule mime_module>
TypesConfig /etc/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</IfModule>
AddDefaultCharset UTF-8
<IfModule mime_magic_module>
MIMEMagicFile conf/magic
</IfModule>
EnableSendfile on
Include conf.d/*.conf