Apache曾经使用不同的ServerName匹配虚拟主机

我有一个问题。 我在IP 1.2.3.4上有一个用于domain1.com的VirtualHost,但是Apache向IP 1.2.3.4请求回复,忽略了ServerName。

所以,如果我将domain2.com指向1.2.3.4,我会看到/var/www/html/domain1.com的内容,而不是/ var / www / html / default的内容

哪里不对?

Listen 80 NameVirtualHost 1.2.3.4:80 <VirtualHost 1.2.3.4:80> SSLEngine off DocumentRoot /var/www/html/domain1.com ServerName www.domain1.com:80 <Directory "/var/www/html/domain1.com"> allow from all </Directory> LogLevel notice UseCanonicalName on </VirtualHost> <VirtualHost _default_:80> DocumentRoot /var/www/html/default <Directory /var/www/html/default> allow from all </Directory> </VirtualHost> 

您在这里使用_default_将匹配尚未为其他VirtualHost定义的IP。 这意味着根据你的configuration对1.2.3.4:80的请求将使用第一个为www.domain1.com定义的VirtualHostVirtualHost优先级由它们在configuration文件中的顺序来定义。

要达到您所需的configuration,请将您的默认VirtualHost移至www.domain1.com之上,并将IP从_default_更改为1.2.3.4

有关这些细节的更多信息列在Apache手册中,您可以在此链接中find它。