使用 Apache 虚拟主机的子域名

使用 Apache 虚拟主机的子域名

我想在我的网站上设置用于各种目的的子域名。例如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

相关内容