open-how2 – Entdecke. Verstehe. Nutze.
Veröffentlicht am
How2-Tipps

mod_rewrite meistern – schöne URLs und Weiterleitungen

Autor
mod_rewrite meistern – schöne URLs und Weiterleitungen

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.