我的 apache 2.2 中有许多不同的子域指向同一个目录/应用程序。
像这样:
<VirtualHost *:80>
ServerName subdomain1.domain.com.br
ServerAdmin [email protected]
DocumentRoot /var/www/application
</VirtualHost>
<VirtualHost *:80>
ServerName subdomain2.domain.com.br
ServerAdmin [email protected]
DocumentRoot /var/www/application
</VirtualHost>
问题是配置 apache 时每个子域都添加到 DNS 服务器中。
是否可以只有一个虚拟主机来代表所有子域名?
像这样:
<VirtualHost *:80>
ServerName *.domain.com.br
ServerAdmin [email protected]
DocumentRoot /var/www/application
</VirtualHost>
答案1
是的,这是可能的,但在文章中VirtualHost 示例没有提到语法,例如ServerName *.domain.com.br
。在这种情况下,你必须使用服务器别名指令,VirtualHost 配置应该是这样的:
<VirtualHost *:80>
ServerName domain.com.br
ServerAlias *.domain.com.br
ServerAdmin [email protected]
DocumentRoot /var/www/application
</VirtualHost>
请注意,指令 ServerAlias 只能在虚拟主机上下文中使用。
我认为,当您的所有子域都指向一个 DocumentRoot 文件夹时,如果在服务器上下文中设置 ServerName,结果将几乎相同:
<虚拟主机 *:80>服务器名称 domain.com.br服务器别名 *.domain.com.br服务器管理员[电子邮件保护] 文件根目录 /var/www/application</虚拟主机>
在这种情况下,您必须输入/etc/hosts
下列的:
xxx.xxx.xxx.xxx domain.com.br
xxx.xxx.xxx.xxx
您的服务器的 IP 地址在哪里。