我想在我的网站上设置用于各种目的的子域名。例如rc.mywebsite.com对于候选版本,beta.mywebsite.com适用于 Beta 候选版,www.mywebsite.com/mywebsite.com 适用于实时版本。
我在 Ubuntu 12.04LTS 服务器上使用 Apache 2.2.22,启用了 PHP 和 mod_rewrite。在我的 /etc/apache2/sites-available 中,我有一个文件 mywebsite.com,使用 a2ensite mywebsite.com 启用,条目如下
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName mywebsite.com
ServerAlias mywebsite.com
DocumentRoot /var/www/mywebsite.com
<Directory /var/www/mywebsite.com>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName beta.mywebsite.com
ServerAlias beta.mywebsite.com
DocumentRoot /var/www/beta.mywebsite.com
</VirtualHost>
我的 /etc/hosts 文件有
127.0.0.1 localhost
XX.XX.XX.XX myotherwebsite.com
XX.XX.XX.XX mywebsite.com
XX.XX.XX.XX beta.mywebsite.com
现在上面的这个不起作用... :( 我只能访问 mywebsite.com 当我尝试访问 beta.mywebsite.com 时我得到了找不到服务器错误。
答案1
问题到底是什么?
首先,您应该摆脱重复的 ServerAlias - 它什么也不做。
第一个列出的虚拟主机是默认的;它将接收所有与任何其他虚拟主机不匹配的请求。
除此之外,您的虚拟主机看起来很好;只需记住不要使用重叠的文档根。
答案2
您是否在配置中启用了 NameVirtualHosts?http://httpd.apache.org/docs/2.2/mod/core.html#namevirtualhost
如果您想配置基于名称的虚拟主机,则 NameVirtualHost 指令是必需的指令...
要在所有接口上接收请求,您可以使用参数
*:80
,或者,如果您正在监听多个端口,并希望服务器使用一组特定的虚拟主机对所有端口进行响应,*
例如:
NameVirtualHost *:80