httpd AH01630、AH01797错误解决

为了以后代码更新、提交方便,把公司测试、正式服务器上的相关服务的配置更改了一下。本来只是改了下代码文件夹位置,以为只需要改一下Apache的配置文件中的代码文件夹路径就行,没想到还遇到两个问题,这里记录一下。

出错的系统为CentOS7,httpd版本为Apache/2.4.6。
首先,我个人肯定是更喜欢使用Nginx的,但是由于历史遗留问题,不得不使用Apache,虽然不熟悉,但也不得不硬着头皮上了,这不,很久没更新的正式服务器,一重启就遇到问题了。
首先是AH01630。
这是改之前的配置文件:

<VirtualHost *:80>
ServerName xxx
DocumentRoot /var/xxx/public
ServerAlias xxx
ErrorLog /var/log/httpd/erp.error.log
CustomLog /var/log/httpd/erp.requests.log combined
<Directory /var/xxxx/public>
DirectoryIndex index.html index.php
        AllowOverride All
        Order deny,allow
        Allow from all
</Directory>
</VirtualHost>

更改完配置文件之后,我还特意httpd -t了一下,httpd提示我,Syntax OK,结果重启之后,却是httpd的默认页面,查看日志文件显示:

[Tue Mar 27 16:04:40.847499 2018] [authz_core:error] [pid 28329] [client 14.154.178.13:24923] AH01630: client denied by server configuration: /var/xxx/public/noindex, referer: http://xxxx.xxx.xxx/noindex/css/open-sans.css

天杀的,这AH01630不知道怎么就出来了,明明只改了下代码路径,连.htaccess都没动,直接就报错了。
查找文档得知,由于Apache2.2和2.4的区别,有些配置跟之前不一样,需要将Allow from all这一行改成Require all granted,这样就能解决了。
然后是AH01797问题。
这是改之前的配置文件:

<VirtualHost *:80>
ServerName xxx
DocumentRoot /var/xxxx/
ServerAlias xxxx
ErrorLog /var/log/httpd/xxx.error.log
CustomLog /var/log/httpd/xx.log combined
<Directory /var/xxxx>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride FileInfo Options
        Order allow,deny
        allow from all
</Directory>
Header unset X-Powered-By
</VirtualHost>

这其实也就是thinkphp5的Apache配置文件,在代码没变的情况下,重启之后,访问就报AH01797错误了,这是报错日志:

[Tue Mar 27 16:46:28.011486 2018] [access_compat:error] [pid 28524] [client 14.154.178.13:24724] AH01797: client denied by server configuration: /xxxx/noindex, referer: http://xxxx/noindex/css/open-sans.css

同样,查看文档得知,需要将这两行:

Order allow,deny
allow from all

替换成:

Require all granted

就这么一行配置就行,简直了!
参考文档:
https://wiki.apache.org/httpd/ClientDeniedByServerConfiguration