FAQ zur Optimierung der .htaccess-Datei

Die .htaccess-Datei ist ein mächtiges Werkzeug in deiner WordPress-Installation. Mit ihr kannst du die Sicherheit erhöhen, die Performance verbessern und viele weitere wichtige Einstellungen vornehmen.


Inhaltsverzeichnis


Grundlegende Konfiguration

Standard WordPress .htaccess

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

RewriteEngine On: Aktiviert das Umschreiben von URLs.
RewriteBase /: Setzt den Basis-Pfad für alle nachfolgenden Regeln.
RewriteRule ^index.php$ – [L]: Wenn die Anfrage an index.php geht, tue nichts und beende die Verarbeitung dieser Regel.
RewriteCond %{REQUEST_FILENAME} !-f: Wenn die angeforderte Datei nicht existiert.
RewriteCond %{REQUEST_FILENAME} !-d: Wenn das angeforderte Verzeichnis nicht existiert.
RewriteRule . /index.php [L]: Leite alle anderen Anfragen an index.php weiter.

Sicherheitseinstellungen

Verzeichnisschutz


Order Allow,Deny
Deny from all


Order Allow,Deny
Deny from all

Schütze sensible Verzeichnisse vor unbefugtem Zugriff.

Schutz vor Directory Browsing

Options -Indexes

Deaktiviert die automatische Auflistung des Verzeichnisinhalts, wenn keine Index-Datei vorhanden ist.

Schutz vor schadhaften Abfragen


RewriteCond %{QUERY_STRING} (\|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (\|%3C) [NC,OR]
RewriteCond %{QUERY_STRING} (base64_encode)(.*) (\\|%3D)(.*) [NC,OR]
RewriteCond %{QUERY_STRING} (eval\() [NC,OR]
RewriteCond %{QUERY_STRING} (system\() [NC,OR]
RewriteCond %{QUERY_STRING} (passthru\() [NC,OR]
RewriteCond %{QUERY_STRING} (shell_exec\() [NC,OR]
RewriteCond %{QUERY_STRING} (phpinfo\() [NC,OR]
RewriteCond %{QUERY_STRING} (popen\() [NC,OR]
RewriteCond %{QUERY_STRING} (proc_open\() [NC]
RewriteRule ^(.*)$ - [F,L]

Schütze vor schadhaften Abfragen, die Sicherheitslücken ausnutzen wollen.

Verhindern von Code-Ausführung in Uploads-Verzeichnissen


    
        Deny from all
    

Verhindere die Ausführung von PHP-Dateien im Uploads-Verzeichnis, um die Sicherheit zu erhöhen.

Performance-Optimierungen

Browser Caching


ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"

Nutze Browser Caching, um die Ladezeiten deiner Website zu verbessern.

GZIP-Komprimierung


AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml

Aktiviere GZIP-Komprimierung, um die Größe deiner HTML, CSS und JS Dateien zu reduzieren.

Cache-Control Header



    Header set Cache-Control "max-age=31536000, public"


    Header set Cache-Control "max-age=31536000"


    Header set Cache-Control "max-age=600"

Setze Cache-Control Header, um dem Browser mitzuteilen, wie lange er bestimmte Dateitypen cachen soll.

URL-Weiterleitungen

301 Weiterleitungen

Redirect 301 /alte-seite.html http://www.deineseite.de/neue-seite.html

Nutze 301-Weiterleitungen, um Besucher und Suchmaschinen auf eine neue URL zu leiten, wenn sich die Adresse deiner Seite geändert hat.

HTTPS erzwingen

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Erzwinge die Verwendung von HTTPS, um die Sicherheit deiner Website zu erhöhen.

Content Security Policy (CSP)

Header set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:"

Setze Content Security Policy Header, um die Sicherheit deiner Website zu verbessern und Angriffe zu verhindern.

Weitere nützliche Einstellungen

Hotlinking verhindern


RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?deineseite\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

Verhindere, dass andere Websites deine Bilder direkt verlinken und damit deinen Server belasten.

XML-RPC deaktivieren


order deny,allow
deny from all

Deaktiviere XML-RPC, um Brute-Force-Angriffe zu verhindern.

Fehlermeldungen anpassen

ErrorDocument 404 /404.html
ErrorDocument 403 /403.html
ErrorDocument 500 /500.html

Passe die Fehlermeldungen an, die Besucher sehen, wenn sie auf eine Seite stoßen, die nicht existiert.

Zugriff auf bestimmte IPs beschränken


Order Deny,Allow
Deny from all
Allow from 123.456.789.000

Erlaube den Zugriff auf bestimmte Verzeichnisse nur von bestimmten IP-Adressen.

Beispiel einer gut ausgewogenen .htaccess Datei

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress


    Order Allow,Deny
    Deny from all



    Order Allow,Deny
    Deny from all


Options -Indexes


RewriteCond %{QUERY_STRING} (\|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (\|%3C) [NC,OR]
RewriteCond %{QUERY_STRING} (base64_encode)(.*) (\\|%3D)(.*) [NC,OR]
RewriteCond %{QUERY_STRING} (eval\() [NC,OR]
RewriteCond %{QUERY_STRING} (system\() [NC,OR]
RewriteCond %{QUERY_STRING} (passthru\() [NC,OR]
RewriteCond %{QUERY_STRING} (shell_exec\() [NC,OR]
RewriteCond %{QUERY_STRING} (phpinfo\() [NC,OR]
RewriteCond %{QUERY_STRING} (popen\() [NC,OR]
RewriteCond %{QUERY_STRING} (proc_open\() [NC]
RewriteRule ^(.*)$ - [F,L]



    
        Deny from all
    



ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType text/css "access plus 1 month"



AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript




    Header set Cache-Control "max-age=31536000, public"


    Header set Cache-Control "max-age=31536000"


    Header set Cache-Control "max-age=600"




RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]



Header set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:"



RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\\.)?deineseite\\.com [NC]
RewriteRule \\.(jpg|jpeg|png|gif)$ - [NC,F,L]



    order deny,allow
    deny from all


ErrorDocument 404 /404.html
ErrorDocument 403 /403.html
ErrorDocument 500 /500.html


Order Deny,Allow
Deny from all
Allow from 123.456.789.000

Kann ich helfen?