我有几个域,我想通过 mod_vhost_alias 启用通配符子域
包含在我的 httpd.conf 中,我有以下通用规则:
<VirtualHost [ip here]:80>
ServerName domain1.com
ServerAlias www.domain1.com
DocumentRoot /home/user1/public_html
</VirtualHost>
<VirtualHost [ip here]:80>
ServerName *.domain1.com
VirtualDocumentRoot /home/user1/subdomains/%-3+
</VirtualHost>
<VirtualHost [ip here]:80>
ServerName domain2.com
ServerAlias www.domain2.com
DocumentRoot /home/user2/public_html
</VirtualHost>
<VirtualHost [ip here]:80>
ServerName *.domain2.com
VirtualDocumentRoot /home/user2/subdomains/%-3+
</VirtualHost>
问题是 apache 完全忽略了带有通配符 ServerNames 的虚拟主机。对 test.domain1.com 或 test.domain2.com 的任何请求都只会显示 /home/user1/public_html 的内容(根据 apache 的默认规则)。
其他一些信息:
/home/user1/subdomains/test
并且/home/user2/subdomains/test
都存在并在其中有文件
我所有的域都有一个在绑定配置中列出的通配符子域,它们指向 Vhost 规则中指定的相同 IP。子域的标准 Vhost 规则有效,但通配符无效。
的输出的剪辑版本httpd -S
# httpd -S 虚拟主机配置: [ip here]:80 是 NameVirtualHost 默认服务器 domain1.com (/etc/httpd/sites/user1:1) 端口 80 namevhost domain1.com (/etc/httpd/sites/user1:1) 端口 80 namevhost *.domain1.com (/etc/httpd/sites/user1:14) 端口 80 namevhost domain2.com (/etc/httpd/sites/user2:1) 端口 80 namevhost *.domain2.com (/etc/httpd/sites/user2:14) 语法OK
# httpd -M 加载模块: 核心模块(静态) mpm_prefork_module(静态) http_module(静态) so_module(静态) rewrite_module(共享) auth_basic_module(共享) authz_host_module(共享) 包含模块(共享) log_config_module(共享) logio_module(共享) mime_magic_module(共享) mime_module(共享) vhost_alias_module(共享) dir_module(共享) suexec_module(共享) php5_module(共享) suphp_module(共享) ssl_module(共享) 语法OK
任何有关问题所在的建议将不胜感激。