403 Forbidden beheben
Ein 403-Fehler bedeutet, dass der Webserver die Anfrage verstanden hat, den Zugriff aber nicht erlaubt.
Die Webseite oder Datei existiert also möglicherweise, darf aber nicht ausgeliefert werden. Das Problem liegt meistens an Dateirechten, fehlenden Index-Dateien, falscher Webserver-Konfiguration oder Zugriffsbeschränkungen.
Was bedeutet 403 Forbidden?
Die Meldung 403 Forbidden bedeutet übersetzt: Zugriff verboten.
Der Server ist erreichbar, verweigert aber den Zugriff auf die angeforderte Seite.
Typische Anzeigen im Browser sind:
403 ForbiddenForbiddenYou don't have permission to access this resourceAccess deniednginx 403 ForbiddenApache 403 Forbidden
Häufige Ursachen
Ein 403-Fehler entsteht häufig durch:
falsche Datei- oder Ordnerrechte
falschen Besitzer von Dateien
fehlende Startdatei wie
index.htmloderindex.phpdeaktiviertes Directory Listing
falsches Webroot-Verzeichnis
fehlerhafte
.htaccess-RegelnZugriffsbeschränkung durch Apache oder Nginx
blockierende Firewall- oder Sicherheitsregel
falsche Konfiguration nach einem Upload
fehlende Berechtigungen nach einer Migration
Erste Prüfung
Prüfe zuerst, ob die Webseite grundsätzlich erreichbar ist.
Öffne deine Domain im Browser.
Prüfe, ob der Fehler auf der gesamten Webseite oder nur auf einer bestimmten Unterseite erscheint.
Prüfe, ob der Webserver läuft.
Prüfe, ob die Dateien im richtigen Verzeichnis liegen.
Prüfe, ob eine Startdatei vorhanden ist.
Typische Startdateien sind:
index.htmlindex.phpindex.htm
Wenn keine Startdatei vorhanden ist und Directory Listing deaktiviert ist, zeigt der Server häufig einen 403-Fehler an.
Webserver prüfen
Prüfe zuerst, ob dein Webserver läuft.
Bei Apache:
systemctl status apache2
Bei Nginx:
systemctl status nginx
Wenn der Dienst nicht läuft, starte ihn neu.
Apache starten:
systemctl start apache2
Nginx starten:
systemctl start nginx
Nach Änderungen an der Konfiguration solltest du den Webserver neu laden.
Apache neu laden:
systemctl reload apache2
Nginx neu laden:
systemctl reload nginx
Webroot prüfen
Das Webroot ist der Ordner, aus dem dein Webserver die Webseite ausliefert.
Häufige Webroot-Verzeichnisse sind:
/var/www/html/var/www/deinedomain.de/home/benutzer/web/usr/share/nginx/html
Wenn deine Dateien im falschen Ordner liegen, kann der Webserver sie nicht korrekt ausliefern.
Prüfe, welches Webroot in deiner Apache- oder Nginx-Konfiguration eingetragen ist.
Startdatei prüfen
Ein häufiger Grund für 403 Forbidden ist eine fehlende Startdatei.
Wenn du nur einen Ordner aufrufst, sucht der Webserver nach einer Startdatei.
Beispiel:
https://deinedomain.de/
Der Webserver sucht dann zum Beispiel nach:
index.htmlindex.php
Prüfe im Webroot, ob eine solche Datei vorhanden ist.
Beispiel:
ls -la /var/www/html
Wenn keine Startdatei vorhanden ist, lege eine an oder lade deine Webseite vollständig hoch.
Beispiel für eine einfache Testdatei:
echo "Webseite funktioniert" > /var/www/html/index.html
Danach rufst du deine Domain erneut im Browser auf.
Dateirechte prüfen
Falsche Rechte sind eine der häufigsten Ursachen für 403-Fehler.
Der Webserver muss Dateien lesen und Ordner betreten können.
Unter Linux gelten meistens folgende Standardrechte:
Ordner
755
Dateien
644
Ordnerrechte setzen:
find /var/www/html -type d -exec chmod 755 {} \;
Dateirechte setzen:
find /var/www/html -type f -exec chmod 644 {} \;
Passe /var/www/html an dein tatsächliches Webroot an.
Besitzer prüfen
Neben den Dateirechten muss auch der Besitzer stimmen.
Bei Apache und Nginx läuft der Webserver oft unter dem Benutzer www-data.
Auf Debian und Ubuntu ist häufig dieser Besitzer sinnvoll:
chown -R www-data:www-data /var/www/html
Bei anderen Systemen oder Panels kann der Benutzer abweichen.
Häufige Webserver-Benutzer sind:
www-dataapachenginxein eigener Benutzer des Webspaces oder Panels
Prüfe deshalb vorher, unter welchem Benutzer dein Webserver läuft.
Apache-Prozesse anzeigen:
ps aux | grep apache
Nginx-Prozesse anzeigen:
ps aux | grep nginx
Apache-Konfiguration prüfen
Wenn du Apache verwendest, kann ein 403-Fehler durch eine falsche Directory-Konfiguration entstehen.
Prüfe deine VirtualHost-Konfiguration.
Typische Datei:
/etc/apache2/sites-available/deinedomain.conf
Ein einfacher Apache-VirtualHost kann so aussehen:
<VirtualHost *:80>
ServerName deinedomain.de
DocumentRoot /var/www/html
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Wichtig ist vor allem:
Require all granted
Wenn diese Zeile fehlt oder falsch gesetzt ist, kann Apache den Zugriff verweigern.
Nach Änderungen Apache-Konfiguration prüfen:
apache2ctl configtest
Apache neu laden:
systemctl reload apache2
Nginx-Konfiguration prüfen
Wenn du Nginx verwendest, prüfe den eingetragenen root-Pfad.
Typische Datei:
/etc/nginx/sites-available/deinedomain
Ein einfacher Nginx-Serverblock kann so aussehen:
server {
listen 80;
server_name deinedomain.de;
root /var/www/html;
index index.html index.php;
}
Wichtig ist:
rootzeigt auf das richtige Webrootindexenthält die richtige StartdateiDateien im Webroot sind lesbar
Ordner sind betretbar
Nach Änderungen Nginx-Konfiguration prüfen:
nginx -t
Nginx neu laden:
systemctl reload nginx
.htaccess prüfen
Bei Apache kann eine .htaccess-Datei den Zugriff blockieren.
Prüfe im Webroot, ob eine .htaccess vorhanden ist.
Befehl:
ls -la /var/www/html
Typische problematische Regeln sind:
Deny from all
Require all denied
Oder Zugriffsbeschränkungen auf bestimmte IP-Adressen.
Zum Test kannst du die Datei kurz umbenennen:
mv /var/www/html/.htaccess /var/www/html/.htaccess.bak
Lade danach die Webseite neu.
Wenn der Fehler verschwindet, liegt das Problem an einer Regel in der .htaccess.
Directory Listing
Wenn du einen Ordner ohne Startdatei aufrufst, kann der Webserver versuchen, den Inhalt des Ordners anzuzeigen.
Viele Server verbieten das aus Sicherheitsgründen. Dann erscheint ein 403-Fehler.
Das ist normal und oft sogar gewollt.
Lösung:
Startdatei wie
index.htmloderindex.phpanlegenrichtige Webseite hochladen
Directory Listing bewusst aktivieren, falls wirklich benötigt
Directory Listing sollte nur aktiviert werden, wenn du genau weißt, warum du es brauchst.
PHP-Dateien prüfen
Wenn deine Webseite PHP nutzt, muss PHP korrekt eingerichtet sein.
Bei Apache wird häufig libapache2-mod-php oder PHP-FPM verwendet.
Bei Nginx wird PHP fast immer über PHP-FPM eingebunden.
Wenn PHP falsch eingebunden ist, kann es je nach Konfiguration zu Fehlern kommen.
Prüfe bei PHP-Webseiten:
ist PHP installiert?
läuft PHP-FPM?
stimmt der PHP-Socket?
zeigt
indexaufindex.php?sind PHP-Dateien lesbar?
PHP-FPM prüfen:
systemctl status php*-fpm
Logs prüfen
Die Logs zeigen meistens genauer, warum der Zugriff verweigert wird.
Apache Logs
Typische Dateien:
/var/log/apache2/error.log/var/log/apache2/access.log
Live mitlesen:
tail -f /var/log/apache2/error.log
Nginx Logs
Typische Dateien:
/var/log/nginx/error.log/var/log/nginx/access.log
Live mitlesen:
tail -f /var/log/nginx/error.log
Achte in den Logs auf Meldungen wie:
permission denieddirectory index is forbiddenclient denied by server configurationaccess forbidden by ruleopen() failed
Diese Meldungen zeigen meist direkt die Ursache.
SELinux prüfen
Bei AlmaLinux, Rocky Linux oder anderen RHEL-basierten Systemen kann SELinux den Zugriff blockieren.
Prüfe den SELinux-Status:
sestatus
Wenn SELinux aktiv ist, können falsche Dateikontexte einen 403-Fehler verursachen.
Für Webdateien kann folgender Befehl helfen:
restorecon -Rv /var/www/html
Passe den Pfad an dein Webroot an.
SELinux sollte nicht einfach dauerhaft deaktiviert werden, ohne die Ursache zu verstehen.
Zugriffsbeschränkungen prüfen
Manche Konfigurationen erlauben Zugriff nur für bestimmte IP-Adressen.
Prüfe deshalb:
Apache-Directory-Regeln
Nginx-Location-Regeln
.htaccessWebpanel-Sicherheitsregeln
Firewall-Regeln
Sicherheitsplugins von CMS-Systemen
Wenn du dich aus einem anderen Netzwerk verbindest, kann sich auch deine öffentliche IP-Adresse geändert haben.
CMS-Systeme prüfen
Bei WordPress, Joomla, Shopware oder anderen CMS-Systemen kann ein 403-Fehler auch durch Plugins, Themes oder Sicherheitsfunktionen entstehen.
Prüfe:
Sicherheitsplugins
Wartungsmodus
fehlerhafte
.htaccessDateirechte nach Updates
beschädigte Uploads
blockierte Adminbereiche
fehlende PHP-Berechtigungen
Bei WordPress kannst du zum Test Sicherheitsplugins vorübergehend deaktivieren, indem du den Plugin-Ordner umbenennst.
Beispiel:
mv /var/www/html/wp-content/plugins /var/www/html/wp-content/plugins_off
Danach prüfst du, ob die Webseite wieder erreichbar ist.
Nach Upload oder Migration
Nach einem Upload per SFTP, SCP oder Migration können Rechte und Besitzer falsch gesetzt sein.
Typische Probleme:
Dateien gehören dem falschen Benutzer
Ordner haben keine Ausführungsrechte
.htaccesswurde nicht übertragenversteckte Dateien fehlen
Webroot wurde falsch gewählt
Startdatei liegt in einem Unterordner
Prüfe nach einer Migration besonders:
Webroot
Besitzer
Dateirechte
Startdatei
.htaccessPHP-Version
Datenbankverbindung
Schnelle Prüfreihenfolge
Gehe bei einem 403-Fehler am besten so vor:
Prüfe, ob der Webserver läuft.
Prüfe, ob die Domain auf den richtigen Server zeigt.
Prüfe, ob die Dateien im richtigen Webroot liegen.
Prüfe, ob eine Startdatei vorhanden ist.
Prüfe Datei- und Ordnerrechte.
Prüfe den Besitzer der Dateien.
Prüfe Apache- oder Nginx-Konfiguration.
Prüfe
.htaccess, falls Apache verwendet wird.Prüfe die Webserver-Logs.
Prüfe Sicherheitsplugins oder Zugriffsbeschränkungen.
Häufige Fehlermeldungen
directory index is forbidden
keine Startdatei vorhanden und Directory Listing deaktiviert
permission denied
Dateirechte oder Besitzer falsch
client denied by server configuration
Apache- oder Nginx-Regel blockiert Zugriff
access forbidden by rule
Zugriff durch Regel oder Sicherheitsmodul blockiert
open() failed
Datei kann nicht gelesen oder geöffnet werden
Support kontaktieren
Wenn du den Fehler nicht selbst beheben kannst, kontaktiere den Support.
Gib dabei bitte folgende Informationen an:
betroffene Domain
verwendetes Betriebssystem
verwendeter Webserver: Apache oder Nginx
Pfad zum Webroot
genaue Fehlermeldung im Browser
relevante Logauszüge
was du zuletzt geändert hast
ob der Fehler die ganze Webseite oder nur einzelne Seiten betrifft
Sicherheit: Sende keine Passwörter, privaten SSH-Keys, Datenbankpasswörter oder API-Tokens an den Support.
Zuletzt aktualisiert