- Veröffentlicht am
- • How2-Tipps
mod_rewrite meistern – schöne URLs und Weiterleitungen
- Autor
-
-
- Benutzer
- tmueller
- Beiträge dieses Autors
- Beiträge dieses Autors
-
Saubere URLs, 301-Redirects und SEO-Optimierung mit Apache
Niemand mag kryptische URLs wie
https://example.com/index.php?id=42&lang=de.
Schöner, verständlicher und suchmaschinenfreundlicher ist:
https://example.com/blog/apache-mod-rewrite-anleitung
Genau das ermöglicht mod_rewrite, eines der mächtigsten Module des Apache-Webservers. In diesem Artikel erfährst du, wie du sprechende URLs, Weiterleitungen und Canonical-Strukturen richtig umsetzt – und was du dabei für SEO beachten solltest.
Was ist mod_rewrite?
mod_rewrite ist ein Apache-Modul, das Anfragen auf URL-Ebene umschreiben kann. Es analysiert eingehende URLs und leitet sie nach bestimmten Regeln intern oder extern weiter.
Du kannst damit:
- URLs verkürzen oder umbenennen
- 301/302-Weiterleitungen einrichten
- Canonical-URLs definieren
- SEO-freundliche Strukturen aufbauen
Und das alles meist mit einer einzigen Datei: .htaccess
Aktivieren von mod_rewrite
Unter Debian/Ubuntu:
sudo a2enmod rewrite
sudo systemctl restart apache2
Anschließend muss Apache die Nutzung von .htaccess erlauben.
Öffne deine VirtualHost-Konfiguration (z. B. /etc/apache2/sites-available/example.conf) und aktiviere die Option:
<Directory /var/www/html>
AllowOverride All
</Directory>
Dann Apache neu laden:
sudo systemctl reload apache2
Jetzt kannst du in deiner Website-Struktur .htaccess-Dateien verwenden.
Grundlagen der Rewrite-Engine
In einer .htaccess-Datei aktivierst du die Engine mit:
RewriteEngine On
Die Regeln folgen in Form von:
RewriteRule <Muster> <Ziel> [Optionen]
Beispiel:
RewriteRule ^blog/([0-9]+)/?$ blog.php?id=$1 [L]
Wenn jemand /blog/42 aufruft, liefert Apache intern /blog.php?id=42 aus.
1. Schöne URLs – "Pretty URLs"
Statt:
https://example.com/product.php?id=15
möchtest du:
https://example.com/produkte/15
Lösung:
RewriteEngine On
RewriteRule ^produkte/([0-9]+)/?$ product.php?id=$1 [L]
Die URL bleibt für den Nutzer schön, Apache holt aber intern die richtige Datei.
SEO-Vorteil: Suchmaschinen bewerten sprechende URLs besser, da sie Struktur und Keywords enthalten.
2. 301-Weiterleitungen (permanent)
301-Redirects sind wichtig, wenn sich URLs ändern – z. B. beim Relaunch oder Domainwechsel.
Beispiel:
Redirect 301 /alteseite.html https://example.com/neue-seite/
Oder mit mod_rewrite dynamisch:
RewriteRule ^alteseite/?$ /neue-seite/ [R=301,L]
Tipp: Verwende 301 (permanent) für dauerhafte Änderungen und 302 (temporär) für Testzwecke.
3. www auf non-www (oder umgekehrt)
Variante 1: www → non-www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
Variante 2: non-www → www
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
So vermeidest du doppelte Inhalte (Duplicate Content) unter verschiedenen URLs.
4. HTTPS erzwingen
Damit alle Nutzer sicher surfen, sollte Apache HTTP auf HTTPS umleiten:
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Kombiniert mit Let’s Encrypt wird dein Webauftritt so DSGVO-konform und modern.
5. Canonical-URLs definieren
Canonical-Tags helfen Suchmaschinen zu verstehen, welche URL die „Hauptversion“ eines Inhalts ist. Sie werden nicht über mod_rewrite gesetzt, aber du kannst Weiterleitungen so konfigurieren, dass immer dieselbe URL-Struktur verwendet wird (z. B. immer ohne „www“ oder immer mit Slash am Ende).
Beispiel:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [R=301,L]
Entfernt überflüssige Schrägstriche am Ende und sorgt für einheitliche URL-Struktur.
6. Performance-Tipp: Regeln minimieren
Jede .htaccess-Datei wird bei jeder Anfrage erneut gelesen.
Für große Websites mit vielen Regeln ist es daher besser, Rewrite-Regeln direkt in der VirtualHost-Konfiguration zu hinterlegen.
Beispiel:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/example
<Directory /var/www/example>
RewriteEngine On
RewriteRule ^blog/([0-9]+)/?$ blog.php?id=$1 [L]
</Directory>
</VirtualHost>
So spart Apache wertvolle Millisekunden pro Anfrage.
7. mod_rewrite debuggen
Fehlerhafte Regeln sind oft schwer zu finden. Apache bietet Debugging über das Rewrite-Log:
LogLevel alert rewrite:trace3
Danach findest du im Error-Log (/var/log/apache2/error.log) detaillierte Informationen über ausgeführte Regeln.
mod_rewrite ist eines der leistungsfähigsten Werkzeuge in Apache – und gleichzeitig eines der am meisten missverstandenen. Ob sprechende URLs, Weiterleitungen oder SEO-Optimierungen: Mit ein paar gezielten Regeln kannst du deine Website nicht nur benutzerfreundlicher, sondern auch suchmaschinenfreundlicher machen.
Einmal richtig konfiguriert, sorgt mod_rewrite für:
- klare, saubere URLs
- weniger Duplicate Content
- bessere Rankings
Kurz gesagt: Ein Must-have für jede professionelle Apache-Konfiguration.