Apache 配置文件 000-default.conf 不起作用

Apache 配置文件 000-default.conf 不起作用

因此,我尝试更改 apache 的 DocumentRoot,但出于某种奇怪的原因,它似乎忽略了文件 /etc/apache2/sites-available/00-default.conf

这是该文件的内容:

<VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.
    #ServerName www.example.com

    ServerAdmin webroot@localhost
    DocumentRoot /home/david/www


    <Directory /home/david/www>
        Options Indexes
            Require all granted
    </Directory>
    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

答案1

Apache 会忽略它sites-available,直到您启用该站点(在这种情况下它会在 中建立符号链接sites-enabled)。

运行以下命令:

sudo a2dissite 000-default
sudo a2ensite 000-default
sudo systemctl restart apache2

这将禁用“默认”站点,启用“默认”站点,然后重新启动 Apache 将刷新配置,然后应相应地使用更新的 docroot。请注意,可能还有其他未在此处讨论的权限问题;您需要为此提出新问题。

答案2

上述解决方案对我都不起作用。无论我怎么尝试,我都无法加载默认网站,包括从 14.04 VPS 复制配置,它 100% 正常工作(我正在升级到 18.04)。

最后,将本地服务器名称的 VirtualHost 添加到我的 apache2.conf 中,强制将其作为第一个定义的 VirtualHost,这样就成功了。这不是我喜欢的解决方案,但它确实有效:

<VirtualHost webserver.mydomain.za:80>
  ServerAdmin   [email protected]
  ServerName    webserver.mydomain.za
  DocumentRoot  /var/www/nowebsite
  ErrorLog      ${APACHE_LOG_DIR}/error.log
  CustomLog     ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>`

奇怪的是,默认 SSL 站点第一次就成功了。

答案3

尝试移除。

<Directory /home/david/www>
    Options Indexes
        Require all granted
</Directory>

例子:

VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /home/david/www>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

重新加载 Apache。

答案4

<VirtualHost *:80>
  
  ServerAdmin webmaster@localhost
  DocumentRoot /home/david/www

  <Directory /home/david/www>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
  </Directory>

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

sudo systemctl 重新启动 apache2

您应该删除所有代码,并将第一个代码示例放入 Apache 配置文件中,该文件为 000-default.conf,可在 /etc/apache2/sites-available/ 中找到,
第二个命令将重新启动 apache web 服务器。此外,我想告诉您,您应该始终将 DocumentRoot 放在 /var/www/html/

相关内容