[已解决] apache 虚拟目录403原因

深渊向深渊呼唤

主要有以下几个原因:

    目录权限 这个看apache错误日志,一般会有提示,如:
1475 [Thu Jun 20 16:39:43.673203 2019] [core:crit] [pid 43885] (13)Permission denied: [client 112.93.21.21:14290] AH00529: /home/hello/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable and that '/home/hello/' is executable

需要给目录加上可读可执行权限,如

chmod o+x /home/hello
chmod o+r /home/hello
    Require all denied 设置

如这样配置虚拟目录:

Alias /virtualdirectory/ "D:/user/www/virtual/"
<Directory "D:/user/www/virtual/">
   Options Indexes FollowSymLinks MultiViews ExecCGI
   AllowOverride All
   Order allow,deny
   Allow from all
</Directory>

apache默认配置是比较严格的,不允许未经过验证去访问目录,这个可以在httpd.conf找到该配置:

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

解决方法:给虚拟目录增加 require all granted 指令,即上述配置变成:

Alias /virtualdirectory/ "D:/user/www/virtual/"
<Directory "D:/user/www/virtual/">
   Options Indexes FollowSymLinks MultiViews ExecCGI
   AllowOverride All
   Order allow,deny
   Allow from all
   Require all granted
</Directory>
    SELinux

主要是 rehat系列发行版,该设定比较烦人,不想配置的直接关掉:

查看SELinux状态:

1、/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态

SELinux status: enabled

2、getenforce ##也可以用这个命令检查

关闭SELinux:

1、临时关闭(不用重启机器):

setenforce 0 ##设置SELinux 成为permissive模式

2、修改配置文件需要重启机器:

修改/etc/selinux/config 文件

将SELINUX=enforcing改为SELINUX=disabled

重启机器即可

栏目