Linux ·

Apache访问index.html总是出现403 Forbidden错误的解决方案

刚装了Apache,我保证/etc/httpd/conf/httpd.conf这里面设置的没问题,什么权限啥的一点问题都没有,不要再说什么Deny from all了,根本不是这玩意儿的问题。我的httpd.conf里面都是Allow from all,怎么会是配置问题。

那是哪里的问题呢?

请接着看:

我在/var/www/html里面使用命令产生一个简单的文件

echo "hello" >index.html

然后访问我的Apache服务器地址http://192.168.116.129,出现了hello的页面。现在删除这个简单的index.html,把github首页保存为index.html文件然后送到/var/www/html下,再次打开http://192.168.116.129,结果就是403 Forbidden。我很费解,怎么会这样,同样是index.html为什么会是不同的结果。为了证明不是文件权限问题,我以root权限运行chmod -R 777/var/www/之后把目录下所有文件权限全部升高,结果还是403,简直怪了,这可是777权限!更奇怪的是访问我自己写的index.html就可以,访问我从别处复制过来github的index.html的就不行。

后来我搜到了几篇文章,从Google那边得到的消息是CentOS系统会自动安装selinux,这玩意儿有极其严格的权限机制,导致从别处复制过来的index.html访问会出现问题,当然你要是在/var/www/html自建目录去访问,由于selinux的阻碍也肯定会出问题。所以就用简单粗暴的方法直接废了selinux,打开/etc/selinux/config文件,把SELINUX=enforcing改为SELINUX=disable,重启centos,你要是不想重启的话可以运行setenforce 0命令即时生效。

现在可以了,访问http://192.168.116.129出现了我自己保存的index.html页面,而且这页面看起来和github完全一样,除了链接不能点之外~~

所以你要是找了很久都找不到你的Apache为何总是403错误,你就把selinux干掉再试试。除此之外iptables也可能会阻止访问,所以最好配置下,对于我这种在虚拟机里玩Apache的,一般是把iptables也停掉的。

参与评论