我想将 www.example.com 映射到特定的虚拟主机,然后我希望 example.com 的所有其他子域都转到另一个虚拟主机。
为此,我创建了这些主机:
<VirtualHost *:80>
ServerName www.example.com
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
ServerAlias *.example.com
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
现在选择服务哪个主机似乎相当随机。如果我有时重新启动 apache,我会得到一个主机,有时会得到另一个。
我究竟做错了什么?
谢谢!
更新:如果我在这个配置上运行 apache2ctl -S 我得到这个输出:
虚拟主机配置:
通配符 NameVirtualHosts 和 _default_ 服务器:
*:80 是 NameVirtualHost
默认服务器 www.example.com (/etc/apache2/sites-enabled/dev:3)
端口 80 namevhost www.example.com (/etc/apache2/sites-enabled/dev:3)
端口 80 namevhost example.com (/etc/apache2/sites-enabled/dev:22)
经过大量挖掘后,我决定禁用我运行的单声道应用程序,然后发现它开始从正确的站点提供文件。他们确实需要按顺序输入:
<VirtualHost *:80>
ServerName example.com
</VirtualHost>
<VirtualHost *:80>
ServerName www.example.com
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
正如向导所建议的那样。为了让我的单声道应用程序工作,我在每个虚拟主机中使用了“MonoAutoApplication enabled”。但是我不确定这是最好的选择,因为在单声道网站上 它说你不应该为 asp.net mvc 应用程序使用自动托管(这是我正在使用的)。到目前为止,我看不到缺点。