虚拟主机的文档根目录选择

虚拟主机的文档根目录选择

我正在研究 apache 下基于名称的虚拟主机的配置,用于配置主域及其子域。我发现网上有一个例子建议配置如下:

Listen 80
NameVirtualHost *

<VirtualHost *>
ServerName www.domain.com
DocumentRoot /home/httpd/htdocs/
</VirtualHost>

<VirtualHost *>
ServerName subdomain.domain.com
DocumentRoot /home/httpd/htdocs/subdomain/
</VirtualHost>

直到指令出现之前,这都是有意义的DocumentRoot。我说将一个虚拟主机的文档根目录作为另一个虚拟主机的后代是不明智的,对吗?这种配置是否意味着“子域”目录将在两个域上提供内容?

答案1

此示例可以正常工作。但是,http://www.example.com/subdomain/将与http://subdomain.example.com/

我会用的是:

<VirtualHost *>
ServerName www.example.com
DocumentRoot /home/httpd/www.example.com/htdocs/
</VirtualHost>

<VirtualHost *>
ServerName subdomain.example.com
DocumentRoot /home/httpd/subdomain.example.com/htdocs/
</VirtualHost>

答案2

有时,在新的子域的 DNS 生效之前能够访问 domain.com/subdomain 是有利的。此示例配置是许多控制面板的默认配置,除非您有其他特殊需求,否则它实际上不会造成任何损害。

如果您不希望用户以这种方式访问​​,您可以随时添加 .htaccess mod_rewrite 配置来确认 http_host 是 subdomain.domain.com,如果不是,则进行重定向。(如果您不是服务器管理员,这实际上是您唯一的选择,并且控制面板以这种方式布置您的文档根目录)

相关内容