当我试图通过浏览器访问localhost时,我得到这个错误。

AH01630: client denied by server configuration

我检查了我的网站文件夹权限使用:

sudo chmod 777 -R *

这是我的配置文件:

<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /home/user-name/www/myproject
<Directory />
    Options FollowSymLinks
    AllowOverride all
    Allow from all
</Directory>

<Location />
  Allow from all
  Order Deny,Allow
</Location>

<Directory  /home/user-name/www/myproject/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Order allow,deny
    Allow from all
</Directory>

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

ErrorLog ${APACHE_LOG_DIR}/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 all
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>


当前回答

如果你像我一样尝试了上面所有的答案,但都没有帮助,记得检查你的apache2.conf是否有像IncludeOptional conf-enabled/*.conf这样的行,然后检查该文件夹中的每个.conf文件。

我的有一个security.conf文件,其中包括这部分(需要删除/修改,以不阻止我需要运行的.php文件):

<FilesMatch "^(wp-config\.php|php\.ini|php5\.ini|install\.php|php\.info|readme\.md|README\.md|readme\.html|bb-config\.php|\.htaccess|\.htpasswd|readme\.txt|timthumb\.php|error_log|error\.log|PHP_errors\.log|\.sv$
    Require all denied
</FilesMatch>

我不知道这个文件来自哪里,除非在某个时候我掉进了一个兔子洞,试图保护我的apache配置,找到这个conf,添加它,然后完全忘记了它。

其他回答

问题出在VirtualHost中,但可能不是

要求全部批准

确认您的配置是正确的,下面是正确的示例

这让我抓狂了一天半,但我找到了一个解决方案,如果所有其他解决方案都不成功的话。

这是针对macOS的。

进入活动监视器(重点搜索:活动) 在活动监视器中搜索httpd, httpd是Apache服务 选择root用户的目录,单击左上方的X关闭。

在这一点上,我立即停止得到403个错误,一切都开始正常工作。奇怪的是,我甚至没有重新启动apache它只是工作,我猜它重新启动自己当我去我的本地主机,我真的不知道,但我猜问题是apache实际上没有重新启动时,使用apachectl重启,或停止或启动。希望这能帮助到一些人。

如果您使用的是Apache 2.4

你必须检查允许和拒绝规则

查看http://httpd.apache.org/docs/2.4/upgrading.html#access

在2.2中,基于客户端主机名、IP地址等的访问控制 客户端请求的特征是使用指令完成的 顺序,允许,拒绝和满足。 在2.4中,这种访问控制与其他访问控制的方式相同 使用新的模块mod_authz_host进行授权检查。

新的指令是Require:

2.2配置:

Order allow,deny
Allow from all

2.4配置:

Require all granted

另外,不要忘记在这些更改之后重新启动apache服务器(# service httpd restart)

一个模糊的(刚刚处理过),但可能的原因是一个内部的mod_rewrite规则,在主配置文件(不是.htaccess)中写入一个存在于服务器文件系统根的路径。假设你在你的站点中有一个/media目录,你重写了如下内容:

RewriteRule /some_image.png /media/some_other_location.png

如果你在你的服务器的根目录下有一个/media目录,重写将会尝试到这个目录(导致访问被拒绝错误),而不是在你的站点目录下,因为文件系统的根首先被mod_rewrite检查,在你的站点目录之前,检查路径中的第一个目录是否存在。

问题可能是指令不在<目录>下

https://httpd.apache.org/docs/2.4/mod/mod_authz_host.html#requiredirectives

该指令可以在< Directory>, < Files>,或< Location> section以及.htaccess文件中引用,以控制对服务器特定部分的访问。访问可以基于客户端主机名或IP地址进行控制。