Zie je 403 Forbidden of ‘You don’t have permission to access this resource’? De server weigert de toegang. Zo vind je de oorzaak: rechten, index-bestand, regels of blokkade.
Een 403 Forbidden betekent dat de server de aanvraag heeft begrepen, maar weigert hem uit te voeren. Anders dan bij 401 helpt opnieuw inloggen hier meestal niet: de server heeft besloten dat deze aanvraag niet mag, voor jou of voor iedereen.
Op een eigen website zijn er vier gebruikelijke oorzaken. Eén: bestandsrechten of eigenaar kloppen niet, waardoor de webserver het bestand of de map niet mag lezen. Twee: je opent een map zonder index-bestand (index.html of index.php) terwijl het tonen van mapinhoud uit staat; dat hoort uit te staan. Drie: een regel in .htaccess of de nginx-configuratie weigert de toegang, bijvoorbeeld op IP-adres of bestandstype. Vier: een firewall of WAF (web application firewall, een filter dat verdachte aanvragen tegenhoudt) blokkeert je IP-adres of je aanvraag.
Ben je bezoeker, dan kun je zelf weinig veranderen aan rechten of regels. Wel kun je nagaan of de blokkade aan jouw verbinding ligt, bijvoorbeeld door een VPN of een gedeeld IP-adres dat eerder verdacht gedrag liet zien.
Menunamen kunnen per versie of toestel iets anders heten. Loop de stappen op volgorde af en stop zodra het werkt.
Kijk of je naar een bestaande pagina gaat en niet naar een map (een adres dat eindigt op /map/ zonder pagina). Herlaad de pagina en probeer de homepage van de site. Werkt de homepage wel, dan gaat het om dat ene onderdeel.
Zet een VPN of proxy uit en probeer het opnieuw, of test via mobiele data. Krijg je dan wel toegang, dan blokkeert de site of de firewall ervoor jouw IP-adres. Een pagina met ‘Sorry, you have been blocked’ komt van een beveiligingsdienst vóór de website; neem dan contact op met de eigenaar van de site.
Een verouderde sessiecookie of een extensie die headers aanpast kan een beveiligingsregel activeren. Test in een privévenster. Werkt het daar, wis dan de cookies van deze site.
Het foutenlog noemt de reden. Bij nginx: directory index of "…" is forbidden (map zonder index-bestand), (13: Permission denied) (rechten) of access forbidden by rule (een deny-regel). Bij Apache: AH01276: Cannot serve directory of client denied by server configuration.
sudo tail -n 50 /var/log/nginx/error.log
sudo tail -n 50 /var/log/apache2/error.logGangbaar is 755 voor mappen en 644 voor bestanden. De webserver moet élke map in het pad kunnen openen; namei -l toont de rechten van elke stap. Controleer ook de eigenaar: bestanden die als root zijn geüpload zijn soms niet leesbaar voor de gebruiker waaronder de webserver of PHP draait. Zie ook Permission denied: chmod en chown.
namei -l /var/www/voorbeeld/public/index.php
find /var/www/voorbeeld/public -type d -exec chmod 755 {} \;
find /var/www/voorbeeld/public -type f -exec chmod 644 {} \;Staat er in de map geen index.html of index.php, dan geeft de server 403 omdat het tonen van een mapoverzicht uit staat. Zet het mapoverzicht niet aan om dit op te lossen; dat toont al je bestanden aan iedereen. Zet het juiste index-bestand neer, of controleer of het in de configuratie staat.
# nginx
index index.php index.html;
autoindex off;
# Apache
DirectoryIndex index.php index.html
Options -IndexesZoek in .htaccess en de serverconfiguratie naar regels die toegang weigeren, zoals deny all in nginx of Require all denied en Require ip in Apache. Controleer daarna de firewall en een eventuele WAF: in het logboek van die dienst zie je welke regel de aanvraag tegenhield. Bij fail2ban kun je een IP-adres controleren en vrijgeven.
sudo nginx -T | grep -n -E 'deny|allow'
grep -rn -E 'Require|Deny from' /var/www/voorbeeld/public/.htaccess
sudo fail2ban-client status
sudo fail2ban-client set <jail> unbanip 203.0.113.10Geeft niet de webserver maar de applicatie de 403, dan heeft de ingelogde gebruiker de rol of het recht niet. Controleer de gebruikersrol, of een beveiligingsplugin het beheer afschermt op IP-adres. Bij WordPress kan een beveiligingsplugin de oorzaak zijn; zet die tijdelijk uit om te testen.
Let op: Zet nooit alles op 777 om een 403 op te lossen. Dan mag iedere gebruiker en ieder proces op de server je bestanden wijzigen, en dat misbruiken aanvallers.
Het helpt om vast te stellen wélke laag de toegang weigert, want elke laag heeft een eigen oplossing.
Met curl -sI zie je de Server-header en andere headers, waarmee je vaak herkent welke laag antwoordde.
Kom je er met deze stappen niet uit, of wil je het liever niet zelf doen? We kijken online mee of komen langs. Hulp op afstand kost €20 per uur; komen we langs, dan is de prijs op aanvraag. Je weet vooraf waar je aan toe bent.
Schrijf kort wat er misgaat en wat je al hebt geprobeerd. Kies of we bellen, online meekijken of langskomen.
De server weigert de toegang tot deze pagina of map. Dat kan aan rechten, een ontbrekend index-bestand, een regel in de configuratie of een blokkade van je IP-adres liggen.
Waarschijnlijk wordt je IP-adres, VPN of browser geblokkeerd door een firewall of beveiligingsregel. Test via een ander netwerk en neem contact op met de eigenaar van de site.
Meestal 755 voor mappen en 644 voor bestanden, met als eigenaar de gebruiker waaronder de website draait. Gevoelige configuratiebestanden kunnen strenger.
Nee. Zet liever een index-bestand in de map. Een open mapoverzicht laat zien welke bestanden er staan, ook die je niet wilt delen.
Hulp nodig van een mens? Website-onderhoud · Hosting en onderhoud · Gratis website-scan · Alle oplossingen