Apache不应与没有子域

时间:2015-05-26 12:27:46

标签: apache vhosts

我不是一个特别好的管理员,而是一个程序员。不过我现在需要配置这个apache webserver。

我有一个域abc.sub.domain.com和一个与此域匹配的VHOST。但VHOST也匹配sub.domain.com,它应该只是导致Apaches默认页面而不是我的应用程序目录。

这是我的conf

<VirtualHost *:80>
    ServerName abc.sub.domain.com
</VirtualHost>

Include /path/to/local/config/httpd-vufind.conf

(开源)应用程序在环境变量上构建其整个配置,这就是我需要包含此conf文件的原因。无论域名如何,此文件似乎始终包含在内。

现在,我希望在完全匹配的域中禁用此包含。

然后,我想设置一个仅与sub.domain.com匹配的默认VHOST。在这个领域phpMyadmin和类似的工具应该工作。

以下是我的默认VHOST的样子。在sites-anebled it's called 000-default`下,位于第一个位置。

<VirtualHost *:80>
    ServerAdmin my@email.com
    ServerName sub.domain.com   
    DocumentRoot /var/www
    <Directory /var/www>
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost> 

但这无助于解决我的问题。 sub.domain.com仍然被路由到第一个VHOST配置(带有include语句)。如果域匹配,我如何才能执行

1 个答案:

答案 0 :(得分:0)

默认情况下,apache匹配任何不匹配的ServerName的第一个VirtualHost。在您的上面添加另一个VirtualHost部分 ,它将捕获任何不匹配的主机。其他具有指定名称的VirtualHosts会进一步增加。