以下是我的配置文件:
NameVirtualHost 12.34.56.78:80
<VirtualHost 12.34.56.78:80>
ServerAdmin admin@domain1.com
ServerName domain1.com
ServerAlias www.domain1.com
DocumentRoot /srv/www/domain1.com/public_html1/
ErrorLog /srv/www/domain1.com/logs/error.log
CustomLog /srv/www/domain1.com/logs/access.log combined
</VirtualHost>
<VirtualHost 12.34.56.78:80>
ServerAdmin admin@domain2.com
ServerName domain2.com
ServerAlias www.domain2.com
DocumentRoot /srv/www/domain2.com/public_html1/
ErrorLog /srv/www/domain2.com/logs/error.log
CustomLog /srv/www/domain2.com/logs/access.log combined
</VirtualHost>
当我将www.domain1.com
放入浏览器时,apache2不会检索/srv/www/domain1.com/public_html1/
中的网页,而是从另一个文件中定义的默认文档根获取页面。但是,如果我放www.domain2.com
,一切正常。我没有看到两个VirtualHost配置块之间有任何区别,所以我想知道它有什么不同。顺便说一句,我没有在他们的文档根目录下放置任何.htaccess
文件。
答案 0 :(得分:5)
尝试通过发出以下命令检查您的Apache配置:
/ usr / sbin / apache2ctl -S
我猜您的“默认”虚拟主机使用“www.domain1.com”作为其ServerName,因此它响应对“www.domain1.com”的请求。
在我的机器上,这是因为“www.domain1.com”是我机器的主机名。如果未指定ServerName,Apache会尝试猜测 - 导致上述问题。
我通过在sites-available / default中指定“ServerName default”解决了这个问题。
这也可能有所帮助:
答案 1 :(得分:2)
如果你在Windows上并且可能使用ZendSever,那么你必须做下一步:
在目录“C:\ Windows \ System32 \ drivers \ etc”
中打开文件“hosts”添加
127.0.0.1 www.domain1.com
下
127.0.0.1 localhost
127.0.0.1 domain1.com
它应该是这样的:
127.0.0.1 localhost
127.0.0.1 domain1.com
127.0.0.1 www.domain1.com
127.0.0.1 domain2.com
127.0.0.1 www.domain2.com
127.0.0.1 domain3.com
127.0.0.1 www.domain3.com
所有域名都需要在此文件中注册。
答案 2 :(得分:1)
只是想说这也引起了我的注意,更改默认apache网站中的ServerName对我有用,就像使用
禁用该网站一样a2dissite默认
然后重新加载apache。