为什么 Apache 2.4 不尊重 VirtualHosts?

为什么 Apache 2.4 不尊重 VirtualHosts?

我已经将我的 Web 服务器上的 Raring 迁移到 Saucy,并且将 Apache 从 2.2.x 升级到 2.4.x。

Apache 现在似乎不知道 sites-enabled 目录或其内容。每个主机都使用 000-default.conf 提供服务。VirtualHost 的一个示例是006-cjshayward

<VirtualHost *:80>
    ServerName cjshayward.com
    ServerAdmin [email protected]

    DocumentRoot /home/jonathan/cjshayward/public_html
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options ExecCGI Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/author.cjshayward.error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

<VirtualHost *:80>
    ServerName www.cjshayward.com
    ServerAlias author.cjshayward.com cjsh.name www.cjsh.name cjsh.info www.cjsh.info
    RewriteEngine on
    RewriteRule ^(.*)$ http://cjshayward.com$1 [R=301,L]
</VirtualHost>

我还需要做什么才能注册为拥有自己父目录的 VirtualHost?

答案1

Apache 2.2 的 apache2.conf 有以下指令:Include sites-enabled/*

Apache 2.4 的 apache2.conf 已切换为使用该指令:IncludeOptional sites-enabled/*.conf

您的目录中的文件很可能sites-enabled不是以.conf

答案2

正如 Shane 提到的,您需要确保 httpd.conf 包含来自您的 sites-enabled 文件夹的文件。

此外,大多数基于 Debian 的发行版将包含 sites-enabled 文件夹中的所有文件,而我上次检查时发现 Redhat“等效版本”仅包含扩展名为 .conf 的文件。

无论哪种方式,这都需要存在于您的 httpd.conf 中:

Include /etc/apache2/sites-enabled/*

相关内容