我已经玩了几个小时,并得出结论,问某人可能是最好的前进方式!
我有一个相当开箱即用的apache安装(我添加了mod_security和mod_python)所以没有触及/etc/httpd/conf/httpd.conf
我有许多域名都是以s运行的,每个域都有自己独立的配置文件。它们都按预期工作,除了任何无法识别的主机名将提供来自第一个虚拟主机的内容(我知道这是预期的行为,因为第一个虚拟主机的内容被提供)
我想设置一个默认的内容集,如果有人通过未知的主机名到达我的服务器 - 但是这样做,第一个网站现在也提供这个我似乎无法找到的默认内容原因。
各个站点的所有配置文件都位于/etc/httpd/conf.d/sites中(因此不会自动包含),然后通过文件(/ etc / httpd / conf)包含在内。我创建的d / sites.conf - 在尝试设置默认服务器之前,其内容是:
Include conf.d/sites/*.conf
我将其修改为试图使默认服务器正常工作:
<VirtualHost _default_:80>
DocumentRoot /home/sites/DEFAULT
<Directory "/home/sites/DEFAULT">
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Include conf.d/sites/*.conf
重新迭代问题 - 当第二个版本的sites.conf处于活动状态时,第一个VirtualHost也会提供此内容;其余的都很好。所有站点的配置文件在语法上都是正确的,并且在ServerNames中没有拼写错误。
(作为参考,我已经包含了违规站点的配置文件 - 存储在/etc/httpd/conf.d/sites/DOMAIN.clintonmontague.co.uk.conf中)
<VirtualHost *:80>
DocumentRoot /home/sites/clintonmontague.co.uk/www
ServerName clintonmontague.co.uk
LogLevel emerg
CustomLog /home/sites/clintonmontague.co.uk/_logs/access_log "combined"
<Directory "/home/sites/clintonmontague.co.uk/www">
AllowOverride none
allow from all
Options +Indexes
</Directory>
</VirtualHost>
对于这个过长的问题感到抱歉!
其他信息:Apache 2.2,CentOS 5,MediaTemple(dv)
答案 0 :(得分:4)
如果你在答案中所说的是正确的,那就试试吧。请注意应该起作用的ServerAlias
行而不是PHP代码:
<VirtualHost *:80>
DocumentRoot /home/sites/clintonmontague.co.uk/www
ServerName clintonmontague.co.uk
ServerAlias www.clintonmontague.co.uk
LogLevel emerg
CustomLog /home/sites/clintonmontague.co.uk/_logs/access_log "combined"
<Directory "/home/sites/clintonmontague.co.uk/www">
AllowOverride none
allow from all
Options +Indexes
</Directory>
</VirtualHost>
答案 1 :(得分:2)
仅供参考 - 似乎问题是因为/ etc / sysconfig / network将我的HOSTNAME报告为clintonmontague.co.uk(碰巧是按字母顺序排列的第一个域)。因此,默认包含该域名,因此正在提供默认内容。
以为如果有人遇到类似的问题,我会发布答案:)
无法在MediaTemple中更改此项(每次(dv)重新启动时,都会重置此值)
我通过将此行包含在默认内容的index.php
中来修复它<?php
if ($_SERVER['SERVER_NAME'] == 'clintonmontague.co.uk' )
{
header ('Location: http://www.clintonmontague.co.uk/');
}
?>