2

我已经玩了几个小时了,得出的结论是询问某人可能是最好的前进方式!

我有一个相当开箱即用的 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)

4

2 回答 2

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>
于 2013-01-26T16:36:00.683 回答
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/');
}
?>
于 2010-03-06T16:13:51.930 回答