Uppercase- auf Lowercase-URLs umschreiben per Rewrite Rule
URLs mit Großbuchstaben können zu Duplicate-Content-Problemen führen, da Suchmaschinen /Seite und /seite als zwei unterschiedliche Seiten bewerten. Mit einer Rewrite Rule lässt sich das einfach lösen: URLs mit Großbuchstaben werden automatisch per 301-Redirect auf die Kleinbuchstaben-Variante umgeleitet.
Die Lösung besteht aus einem kleinen PHP-Skript und ein paar nginx-Direktiven.
Schritt 1: PHP-Skript anlegen
Erstellen Sie im Document Root Ihrer Domain eine Datei namens lower.php mit folgendem Inhalt:
<?php
$uri = $_SERVER['REQUEST_URI'];
$uri_lower = strtolower($uri);
if ($uri === $uri_lower) {
// URL ist bereits lowercase – keine Weiterleitung nötig
http_response_code(404);
exit;
}
$scheme = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http';
$location = $scheme . '://' . $_SERVER['HTTP_HOST'] . $uri_lower;
header('Location: ' . $location, true, 301);
exit;
Das Skript liest die aktuelle URL aus, wandelt sie mit strtolower() in Kleinbuchstaben um und leitet den Browser per 301-Redirect auf die neue URL weiter.
Schritt 2: nginx-Direktiven hinzufügen
Fügen sie folgende nginx-Direktiven in die Konfiguration Ihrer Website ein (z.B. über ISPConfig unter nginx-Direktiven):
if ($uri ~ "[A-Z]") {
set $uc 1;
}
if (!-e $request_filename) {
set $uc 2$uc;
}
if ($uc = 21) {
rewrite ^ /lower.php last;
}
Was passiert hier?
- Die erste Bedingung prüft, ob die URL Großbuchstaben enthält, und setzt die Variable
$ucauf1. - Die zweite Bedingung prüft, ob die angeforderte Datei nicht existiert, und setzt
$ucauf21. - Nur wenn beide Bedingungen zutreffen (
$uc = 21), wird die Anfrage intern anlower.phpweitergeleitet. Das Skript kümmert sich dann um den 301-Redirect.
Existierende Dateien (z.B. Bilder wie Logo.png) werden direkt ausgeliefert, ohne umgeleitet zu werden. So wird sichergestellt, dass nur tatsächliche Seiten-URLs umgeschrieben werden.
Mit dieser Lösung werden URLs mit Großbuchstaben zuverlässig per 301-Redirect auf die Kleinbuchstaben-Variante umgeleitet. So vermeiden Sie Duplicate Content und sorgen für saubere, einheitliche URLs.