78 Dokumentationen verfügbar

Wissensdatenbank

Htaccess Tipps Tricks Anleitung

Zuletzt aktualisiert: 11.01.2026 um 10:21 Uhr

.htaccess Tipps & Tricks

Die .htaccess-Datei ist ein mächtiges Werkzeug zur Konfiguration von Apache-Webservern. Mit ihr können Sie Weiterleitungen einrichten, Caching optimieren, Zugriffe schützen und vieles mehr - ohne Zugriff auf die Server-Konfiguration.

Grundlagen

Die .htaccess-Datei:

  • Liegt im Webroot oder in Unterverzeichnissen
  • Wird bei jedem Request ausgelesen
  • Einstellungen gelten für das Verzeichnis und alle Unterverzeichnisse
  • Erfordert AllowOverride All in der Apache-Konfiguration
💡 Tipp: Erstellen Sie vor Änderungen immer ein Backup: cp .htaccess .htaccess.backup

Weiterleitungen (Redirects)

Einfache Weiterleitungen

# 301 Permanent Redirect (für SEO empfohlen)
Redirect 301 /alte-seite.html https://example.com/neue-seite.html

# 302 Temporary Redirect
Redirect 302 /temp-seite.html https://example.com/andere-seite.html

# Komplettes Verzeichnis weiterleiten
Redirect 301 /blog/ https://example.com/news/

Mit mod_rewrite

RewriteEngine On

# HTTP zu HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# www zu non-www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

# non-www zu www
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

# Trailing Slash entfernen
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [R=301,L]

# Trailing Slash hinzufügen
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /$1/ [R=301,L]

URL-Parameter weiterleiten

# Parameter an neue URL anhängen
RewriteRule ^produkt/(.*)$ /shop/item/$1 [R=301,L,QSA]

# Parameter entfernen
RewriteRule ^(.*)$ /$1? [R=301,L]

Sicherheit

Verzeichnisschutz mit Passwort

# .htaccess
AuthType Basic
AuthName "Geschützter Bereich"
AuthUserFile /pfad/zur/.htpasswd
Require valid-user

Passwort-Datei erstellen:

htpasswd -c /pfad/zur/.htpasswd benutzername

Dateien und Verzeichnisse schützen

# Zugriff auf bestimmte Dateien verweigern
<FilesMatch "\.(htaccess|htpasswd|ini|log|sh|sql)$">
    Order Allow,Deny
    Deny from all
</FilesMatch>

# wp-config.php schützen
<Files wp-config.php>
    Order Allow,Deny
    Deny from all
</Files>

# Verzeichnis-Listing deaktivieren
Options -Indexes

# Zugriff auf versteckte Dateien verweigern
<FilesMatch "^\.">
    Order Allow,Deny
    Deny from all
</FilesMatch>

IP-basierte Zugriffskontrolle

# Nur bestimmte IPs erlauben
Order Deny,Allow
Deny from all
Allow from 192.168.1.100
Allow from 10.0.0.0/24

# Bestimmte IPs blockieren
Order Allow,Deny
Allow from all
Deny from 123.456.789.0

# wp-admin nur für bestimmte IPs
<Files wp-login.php>
    Order Deny,Allow
    Deny from all
    Allow from 192.168.1.100
</Files>

Security Headers

<IfModule mod_headers.c>
    # XSS-Schutz
    Header set X-XSS-Protection "1; mode=block"
    
    # Clickjacking verhindern
    Header set X-Frame-Options "SAMEORIGIN"
    
    # MIME-Type Sniffing verhindern
    Header set X-Content-Type-Options "nosniff"
    
    # Referrer Policy
    Header set Referrer-Policy "strict-origin-when-cross-origin"
    
    # Content Security Policy (anpassen!)
    Header set Content-Security-Policy "default-src 'self';"
    
    # HSTS (Vorsicht - nicht ohne HTTPS!)
    Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</IfModule>

Caching & Performance

Browser-Caching aktivieren

<IfModule mod_expires.c>
    ExpiresActive On
    
    # Standardwert
    ExpiresDefault "access plus 1 month"
    
    # HTML
    ExpiresByType text/html "access plus 0 seconds"
    
    # CSS und JavaScript
    ExpiresByType text/css "access plus 1 year"
    ExpiresByType application/javascript "access plus 1 year"
    
    # Bilder
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType image/gif "access plus 1 year"
    ExpiresByType image/webp "access plus 1 year"
    ExpiresByType image/svg+xml "access plus 1 year"
    ExpiresByType image/x-icon "access plus 1 year"
    
    # Fonts
    ExpiresByType font/woff2 "access plus 1 year"
    ExpiresByType font/woff "access plus 1 year"
    ExpiresByType font/ttf "access plus 1 year"
    
    # PDF und andere
    ExpiresByType application/pdf "access plus 1 month"
</IfModule>

GZIP-Komprimierung

<IfModule mod_deflate.c>
    # Komprimierung aktivieren
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE text/javascript
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/json
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE image/svg+xml
    
    # Browser-Bugs umgehen
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>

Fehlerseiten

# Eigene Fehlerseiten definieren
ErrorDocument 400 /fehler/400.html
ErrorDocument 401 /fehler/401.html
ErrorDocument 403 /fehler/403.html
ErrorDocument 404 /fehler/404.html
ErrorDocument 500 /fehler/500.html
ErrorDocument 503 /fehler/503.html

URL-Umschreibung

Schöne URLs (Pretty URLs)

RewriteEngine On

# example.com/produkt/123 → example.com/produkt.php?id=123
RewriteRule ^produkt/([0-9]+)/?$ produkt.php?id=$1 [L,QSA]

# example.com/kategorie/elektronik → example.com/kategorie.php?name=elektronik
RewriteRule ^kategorie/([a-zA-Z0-9-]+)/?$ kategorie.php?name=$1 [L,QSA]

# Dateiendung .php verstecken
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

Häufige Probleme

Problem Lösung
500 Internal Server Error Syntax prüfen, mod_rewrite aktiviert?
Redirect-Schleife RewriteCond hinzufügen um Endlos-Loops zu verhindern
Regeln werden ignoriert AllowOverride All in Apache-Config prüfen
.htaccess nicht sichtbar Versteckte Dateien im FTP-Client anzeigen
⚠️ Wichtig: Bei Nginx funktioniert .htaccess nicht! Nginx verwendet eine eigene Konfigurationssyntax.

Weitere Hilfe