当前位置: 首页>>技术教程>>正文


升级到apache2.4后出现403错误

,

问题描述

从Ubuntu 13.04服务器升级后,www页面将不会自动显示。

Error 403 Forbidden You don’t have permission to access / on this server.

我已经将访问控制保存从apache2.2更改为apache2.4,但这不起作用。我还能做什么?

最佳解决办法

发生的事情是apache2.4中配置文件的语法已经改变。

资料来源:在我升级到13.10之后,这也发生在我身上

conf.d文件

应将/etc/apache2/conf.d中的所有文件移动到/etc/apache2/conf-available

它们现在以与sitesmods相同的方式工作。只需将您的conf文件放在conf-available文件夹中,然后使用a2enconf <config-file-name>启用所需的文件。

例:

我有一个文件conf.d/httpd.conf,它有ServerName指令。为了完成这项工作,我不得不将其移至conf-available目录并手动启用它。

sudo mv /etc/apache2/conf.d/httpd.conf /etc/apache2/conf-available/httpd.conf
sudo a2enconf httpd

网站文件

以前,/etc/apache2/sites-available中的文件没有扩展名。例如/etc/apache2/sites-available/default。现在需要.conf扩展。

例:

如果你有/etc/apache2/sites-available/some-site,在13.04你可以使用sudo a2ensite some-site启用它。现在它会给你一个错误说

ERROR: Site some-site does not exist!

要解决此问题,请将.conf附加到sites-available中的所有配置文件中。您可以在sites-enabled中执行相同操作,也可以手动删除所有文件和re-enable。我建议手动执行它们,因为您可能需要修复每个VHost(下一步)。

sudo find /etc/apache2/sites-available/ ! -iname '*.conf' -type f -exec mv '{}' '{}'.conf \;

如果您决定手动执行此操作:

sudo rm /etc/apache2/sites-enabled/*
sudo a2ensite your-site-name

虚拟主机指令:

允许/拒绝与要求

如果您有以下内容:

<Directory /path/to/your/site/>
    order allow,deny
    allow from all
</Directory>

它应该成为:

<Directory /path/to/your/site/>
    Require all granted
</Directory>

有关详细信息,请在Stack Overflow上的answer上通过DaveRandom检查comments

简单地说,如果您升级到apache2.4并保留了apache2.2的旧httpd.conf,则allow指令应该保持正常工作。如果您升级了httpd.conf(我建议),那么在将Order /Allow /Deny指令更改为等效的Require之前,您将收到403错误。

目录选项

如果您有目录选项,请注意它们都必须预先添加+-,或者根本不添加任何选项。不允许混合使用两者:

例:

这是允许的:

<Directory /path/to/your/site/>
    Options +Indexes +FollowSymLinks -MultiViews
</Directory>

这是这样的(请注意,这些示例不会同时执行相同的操作,前一个禁用MultiViews选项,下一个禁用):

<Directory /path/to/your/site/>
    Options Indexes FollowSymLinks MultiViews
</Directory>

这不再允许:

<Directory /path/to/your/site/>
    Options Indexes FollowSymLinks -MultiViews
</Directory>

最后一个配置选项会抛出一个语法错误:

Either all Options must start with + or -, or no Option may.

重启apache

一切都完成后,您需要重新启动Apache服务器才能使更改生效:

 sudo apache2ctl restart

您可以在官方文档中找到2.2到2.4的详细upgrade guide

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2216.html,未经允许,请勿转载。