从 Ubuntu 13.04 服务器升级后,www 页面不会自行显示。
错误 403 Forbidden 您无权访问 / 在此服务器上。
我已将访问控制保存从 apache2.2 更改为 apache2.4,但这不起作用。我还能做什么?
Dan*_*Dan 60
发生的事情是apache2.4中配置文件的语法发生了变化。
来源:我升级到 13.10 后也发生了这种情况
中的所有文件/etc/apache2/conf.d
都应移动到/etc/apache2/conf-available
.
他们现在的工作方式相同sites
和mods
工作。只需将您的 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
Run Code Online (Sandbox Code Playgroud)
以前,文件中/etc/apache2/sites-available
没有扩展名。例如/etc/apache2/sites-available/default
。现在需要.conf
扩展。
如果有/etc/apache2/sites-available/some-site
,在 13.04 中,您可以使用sudo a2ensite some-site
. 现在它会给你一个错误说
错误:站点 some-site 不存在!
要解决此问题,请将 a 附加.conf
到sites-available
. 您可以在 中执行相同操作sites-enabled
,也可以删除所有文件并手动重新启用它们。
我建议手动执行它们,因为您可能需要修复每个 VHost(下一步)。
sudo find /etc/apache2/sites-available/ ! -iname '*.conf' -type f -exec mv '{}' '{}'.conf \;
Run Code Online (Sandbox Code Playgroud)
如果您决定手动执行它们:
sudo rm /etc/apache2/sites-enabled/*
sudo a2ensite your-site-name
Run Code Online (Sandbox Code Playgroud)
如果您有以下情况:
<Directory /path/to/your/site/>
order allow,deny
allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)
它应该变成:
<Directory /path/to/your/site/>
Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)
欲了解更多信息,请检查意见通过DaveRandom上的答案堆栈溢出。
简单地说,如果您升级到 apache2.4 并保留旧httpd.conf
的 apache2.2,则允许指令应该继续正常工作。如果您升级httpd.conf
(这是我所暗示的),你会直到你改变获得403错误Order
/ Allow
/Deny
指令为等效Require
。
如果您有目录选项,请注意它们都必须以 a+
或-
或根本不带有。不允许混合使用:
这是允许的:
<Directory /path/to/your/site/>
Options +Indexes +FollowSymLinks -MultiViews
</Directory>
Run Code Online (Sandbox Code Playgroud)
也是这样(请注意,这些示例不会做同样的事情,前一个禁用该MultiViews
选项,下一个没有):
<Directory /path/to/your/site/>
Options Indexes FollowSymLinks MultiViews
</Directory>
Run Code Online (Sandbox Code Playgroud)
这不再被允许:
<Directory /path/to/your/site/>
Options Indexes FollowSymLinks -MultiViews
</Directory>
Run Code Online (Sandbox Code Playgroud)
最后一个配置选项会抛出一个语法错误说:
要么所有选项都必须以 + 或 - 开头,或者没有选项可以。
一切完成后,您需要重新启动 apache 服务器以使更改生效:
sudo apache2ctl restart
Run Code Online (Sandbox Code Playgroud)
您可以在官方文档中找到从 2.2 到 2.4的详细升级指南。
我假设这些网站正在您的 Ubuntu 服务器上运行。
检查您的 httpd.conf 以确保您的 DocumentRoot 设置指向正确的位置。
检查 DocumentRoot 引用的文件夹的文件权限是否可由运行 Web 服务器的用户读取。
检查您是否有适当的index.html/index.htm 等,并且网络服务器没有尝试执行目录列表。
归档时间: |
|
查看次数: |
54856 次 |
最近记录: |