Apache vhost 带有和不带有‘www’?

Apache vhost 带有和不带有‘www’?

使用 Mac OS X 10.6,我从托管多个站点的老方法(在每个虚拟主机的 .conf 文件中都有一个代码块)转变为一种稍微不那么老的方法(告诉服务器在 /sites/ 中查找名为 example.com 的文件夹并提供其中的任何内容。)

要实现这一点只需要几件事:在 /etc/apache2/httpd.conf 中,取消注释此行

#Include /private/etc/apache2/extra/httpd-vhosts.conf

并在下面添加

VirtualDocumentRoot /sites/%0

然后,在

/etc/apache2/extra/httpd-vhosts.conf

添加一段代码

<Directory /sites>
 Order Deny,Allow
 Allow from all
</Directory>

我唯一的问题是,如果访问者请求 example.com 或 www.example.com,我找不到一种简单的方法来提供相同的内容。使用旧方法,很容易让它响应任何子域。我相信有一种方法可以通过 Apache 配置来实现这一点,这样我就不必在 /sites/ 中创建大量符号链接。我在http://httpd.apache.org/docs/2.0/mod/mod_vhost_alias.html

理想情况下,我不仅希望提供相同的内容,无论有没有“www”,我还希望能够根据需要使用不同的子域名,所以我宁愿没有一切(*.example.com) 来自同一文件夹。

答案1

如果您拥有(实际上)2 个具有相同文档根目录的虚拟主机,那么您将遇到无法在站点之间传递 cookie 的问题。更好的解决方案是将非 www 域的所有内容重定向到相应的 www 域。有很多不同的方法可以做到这一点,例如在(空)默认 vhost 中使用 404 处理程序或在 %{SERVER_NAME} 上使用 mod_rewrite

相关内容