Der*_*ins 7 virtualhost apache-2.2
我想将 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 应用程序使用自动托管(这是我正在使用的)。到目前为止,我看不到缺点。
代码应该是:
<VirtualHost _default_:80>
ServerName example.com
</VirtualHost>
<VirtualHost *:80>
ServerName www.example.com
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
看: http://httpd.apache.org/docs/2.2/vhosts/examples.html#default
如果没有其他匹配项,这明确定义了“example.com”vhost 作为要使用的主机。
更新: * 是有效的语法,但不是必需的。你可以在这里找到更多。
但这会起作用。
<VirtualHost *:80>
ServerName example.com
</VirtualHost>
<VirtualHost *:80>
ServerName www.example.com
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
第一个指令将匹配其他地方未明确定义的所有内容。
归档时间: |
|
查看次数: |
6739 次 |
最近记录: |