使用Mac OS X 10.6,我有一些乐趣,从旧的托pipe多个站点的方式(在每个虚拟主机的.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,我找不到一个简单的方法来提供相同的内容。 用旧的方式很容易使其响应任何子域。 我相信有一种方法可以用Apacheconfiguration来做到这一点,所以我不必在/ sites /中使用大量的符号链接。 我在http://httpd.apache.org/docs/2.0/mod/mod_vhost_alias.html找不到明显的答案
理想情况下,我不仅喜欢用或不用“www”来提供相同的内容,我还希望能够根据需要使用不同的子域名,所以我宁愿没有任何东西 (* .example.com )来自同一个文件夹。
如果您有(有效)2个具有相同文档根目录的虚拟主机,那么您将遇到没有跨站点的cookie问题。 更好的解决scheme是将非www域的所有内容redirect到相应的www域。 有很多不同的方法可以做到这一点,例如,在(空)缺省虚拟主机中使用404处理程序,或使用%{SERVER_NAME}上的mod_rewrite