当我试图通过浏览器访问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>


当前回答

我在新服务器上设置虚拟主机时遇到了这个问题,并且站点托管在标准的/var/www/html路径之外。您需要考虑两件主要的事情(例如,假设您正在/opt/my-site中设置一个站点)

在默认的2.4安装中,会显式地拒绝访问根文件系统,然后只允许访问/var/www/html。所以你需要给web服务器从新目录读取的权限,就像这样:

<Directory /opt/mysite>
   Require all granted
</Directory>

完成此操作后,请确保虚拟主机的DocumentRoot位于上面授予访问权限的路径下的某个位置。

<VirtualHost *:80>
        ServerName neatwebsite.com
        DocumentRoot /opt/my-site/html
</VirtualHost>

当我遇到这个问题时,我已经设置好了所有的VirtualHosts,但忘记允许从目录结构中读取(所以我错过了指令)。您需要考虑这两个指令,以及它们如何协同工作。

其他回答

有没有人想过wamp服务器默认不包括httpd-vhosts.conf文件。 我的方法是删除下面的注释

 conf
  # Virtual hosts
  Include conf/extra/httpd-vhosts.conf

在httpd.conf文件中。 仅此而已。

我做了与ravisorg建议的OSX 10.10 Yosemite相同的更改,将Apache升级到2.4版本。下面是添加到http.conf中的更改。

<Directory />
    AllowOverride none
    Require all denied
</Directory>

<Directory /Volumes/Data/Data/USER/Sites/>
    AllowOverride none
    Require all granted
</Directory>

这个“bug”实际上是Apache 2.4的新常态。在我的例子中,我有一个非常具体的规则,拒绝访问任何名称以“。”开头的文件夹或文件,因此我必须为需要这种奇怪名称的特定公用文件夹设置一个异常。

声明一下,我的重写规则是:

RewriteRule”(? ! \ .trusted)(^ | /) \”。- [F]

这条规则[F]删除了所有以“。”开头的东西,但是。trusted,多亏了正则表达式“?!”否定的魔力。

我还有一个可能对某人有用的。 从PHP 5.6 => 7.0升级后收到相同的错误消息。我们已经更改了PHP上传设置,并且在复制后忘记更改。 尽管我当时没有上传图像,但Silverstripe(我们的CMS)拒绝保存并抛出错误。增加图像上传大小,它直接工作。

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

这是针对macOS的。

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

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