当前位置:首页 > 探索

网站403禁止访问怎么解决

打开网页,网站屏幕上冷冰冰地弹出一行字:“403 Forbidden”。禁止解决你刷新了三遍,访问换了浏览器,网站甚至重启了路由器,禁止解决它还是访问那副死样子。别急,网站这玩意儿我碰得多了。禁止解决403跟404不一样,访问404是网站“这东西压根不存在”,403是禁止解决“东西在,但服务器不让你看”。访问说白了,网站你被门卫拦了。禁止解决

先搞清楚谁在拦你。访问多数情况下,403是服务器端配置的问题,不是你的错。比如你访问某个公司内网页面,人家设了IP白名单,你不在名单里,服务器直接甩你一个403。再比如,网站管理员把某个目录的权限设成了“禁止所有外部访问”,你输对网址也没用。我去年帮朋友看他的博客,首页能开,一点后台就403。查了半天,发现是他在服务器上把wp-admin目录的权限改成了700,而web服务器进程的用户根本不在那个组里。改回755,秒开。

还有一种常见情况:你用了代理或者VPN。有些网站会封掉已知的代理IP段。你挂着梯子访问,服务器一看来源IP不对劲,直接403。关掉代理再试,往往就好了。反过来也一样,有些国内网站对海外IP就是403,你挂个国内节点反而能进。

浏览器缓存和Cookie也能捣乱。你之前登录过某个网站,后来账号被降权或者封了,但浏览器还存着旧的身份凭证。服务器一验证,发现这凭证对应的权限不够,403。这时候按Ctrl+Shift+Delete清一下缓存和Cookie,或者直接开无痕窗口,大概率能解决。我自己的习惯是遇到403先开无痕,十次里有三次能直接打开。

如果是你自己搭的网站,那问题多半出在.htaccess或者Nginx配置里。Apache下面有个Require all denied的指令,写上去就是全站403。Nginx里deny all;也是同样的效果。检查一下有没有误伤。还有文件权限,Linux下目录一般是755,文件是644。你要是手贱chmod 700了一个目录,web服务器进程读不进去,403就来了。用ls -l看一眼权限,不对就chmod改回来。

目录索引没开也会导致403。你访问一个目录,比如/images/,服务器默认不允许列出文件列表,又没找到index.html,它就给你403。要么在目录里放个默认首页,要么在配置里加上autoindex on;(Nginx)或者Options +Indexes(Apache)。不过说实话,让服务器列目录不太安全,放个空index文件更省事。

有些403是网站故意设计的。比如你直接访问某个图片的URL,但网站做了防盗链,请求头里没有正确的Referer,服务器就返回403。这种你没办法,除非伪造请求头,但那属于另一回事了。普通用户遇到这种,换个入口点进去就行。

最后说个偏门但真实的情况:服务器负载太高,触发了安全模块,比如ModSecurity。它把正常请求误判成攻击,直接403。这种你只能等,或者联系网站管理员。我遇到过一个小论坛,白天访问正常,晚上一过十点就403。后来问站长,他说是安全插件在高峰期误杀,关掉就好了。

总结一下操作顺序:先开无痕窗口试,再关代理,然后清Cookie。都不行就换设备换网络。如果是自己的服务器,查权限、查配置、查日志。tail -f /var/log/nginx/error.log,错误原因写得清清楚楚。403不是死局,它只是告诉你:门在那儿,钥匙不对。

分享到: