使用Apache作为web服务器, 经常会遇到无权限的问题, 服务器显示:
Forbidden
You don't have permission to access / on this server.
造成这种问题的原因很多,最常见的是在Unix/Linux/MacOS系统中, 该目录在 文件系统 中没有权限, 可以使用命令 chmod -R 777 目录名
为该目录赋权限
其次可能是Apache的配置禁止了访问权限, 需要配置如下
<Directory "/www">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
-
Options
是对该目录的一些选项,Indexes
表示在没有index.html等文件的时候显示文件列表 -
AllowOverride All
表示允许使用.htaccess
文件重写URL -
Order allow,deny
和Allow from all
是对ip的访问配置 -
Require all granted
意思是允许所有的请求
使用某些第三方软件来安装的Apache, 比如在ubuntu下用
apt-get
命令, 默认配置文件中会有这么一段配置:
<Directory />
Options FollowSymLinks
AllowOverride ALL
Require all denied
</Directory>
出于安全方便的考虑, 将根目录/
(也包含它的子目录)全部使用Require all denied
设置为禁止访问,将此行注释掉即可访问, 但不建议这么做, 最好是仅对需要访问的目录使用Require all granted
来单独赋权
其他还有一些, 比如目录下存在一个.htaccess
文件, 内容为Deny from all
, 或者目录下存在一个静态文件index.html
,内容为
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
也可以使浏览器显示一个无权限的状态
这两种方法通常是在无法修改服务器配置和Apache配置的情况下, 需要禁止一些目录的访问权限的时候使用