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


当前回答

对于所有目录,写入“要求所有授予”,而不是“允许从所有”

更新

如果上面的不工作,然后也删除下面提到的行:

为了允许,拒绝

其他回答

我做了与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>

对于所有目录,写入“要求所有授予”,而不是“允许从所有”

更新

如果上面的不工作,然后也删除下面提到的行:

为了允许,拒绝

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

这是针对macOS的。

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

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

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

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

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

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

确保包括任何特定于用户的配置!

如果这一页上的其他答案都不适合你,下面是我在几个小时的挣扎后遇到的。

我使用了特定于用户的配置,在/private/etc/apache2/extra/httpd-userdir.conf中将Sites指定为我的UserDir。但是,我被禁止访问端点http://localhost/~jwork/。

我可以在/var/log/apache2/error_log中看到对/Users/jwork/Sites/的访问被阻止。但是,我被允许通过http://localhost/访问DocumentRoot。这表明我没有权限查看~jwork用户。但据我所知,ps aux | egrep '(apache|httpd)'和lsof -i:80, apache是为jwork用户运行的,所以很明显没有使用我的用户配置编写一些东西。

给定一个名为jwork的用户,下面是我的配置文件:

二等兵/ etc / apache2 \用户/ jwork上。

<Directory "/Users/jwork/Sites/">
    Require all granted
</Directory>

这个配置完全有效。然而,我发现我的用户配置没有被包括在内:

/私人/ etc /输入/多/ httpd-userdir.conf

## Note how it's commented out by default.
## Just remove the comment to enable your user conf.
#Include /private/etc/apache2/users/*.conf

注意,这是userdir conf文件的默认路径,但正如您将在下面看到的,它是在httpd.conf中可配置的。确保下列行已启用:

/ / etc / apache2 /私人httpd.conf

Include /private/etc/apache2/extra/httpd-userdir.conf

# ...

LoadModule userdir_module libexec/apache2/mod_userdir.so