Umlaut-Domain per mod_rewrite umleiten

Um im Netz keinen Dublicate Content zu erzeugen, leiten wir auf unseren Apache-Webservern mittels mod_rewrite die verschiedenen Domains immer auf eine URL zusammen.

Unter Apache mit mod_rewrite funktioniert das wie folgt:

RewriteCond %{HTTP_HOST} ^(www\.)?domain1\.de$ [NC,OR]<br>
RewriteCond %{HTTP_HOST} ^(www\.)?domain2\.de$ [NC,OR]<br>
RewriteCond %{HTTP_HOST} ^(www\.)?domain3\.de$ [NC,OR]<br>
RewriteCond %{HTTP_HOST} ^domain0\.de$ [NC]<br>
RewriteRule (.*) http://www.domain0.de/$1 [R=301,L]

Dabei werden alle Domains auf domain0.de weitergeleitet.

Bei den Rewrite Conditions kännen sog. Flags angehängt werden, die in eckigen Klammern geschrieben werden:

’nocase|NC‘ (no case)

Dieses Pattern macht den Test case-insensitive also er differenziert nicht mehr zwischen Groß- und Kleinschreibung: ‚A-Z‘ und ‚a-z‘ werden gleich behandeltd im Test-String und dem Cond-Pattern.

‚ornext|OR‘ (or next condition)

Dieses Flag kann genutzt werden, um die Regeln mit einem oder zu kombinieren. In der Regel würden diese mit einem AND verknüpft

Als Sonderfall haben wir nun noch Domains mit Umlauten, die weitergeleitet werden sollten. Im Web findet man häufig Referenzen, dass die Umlaute direkt eingegeben werden könnten, bei uns hat das nicht funktioniert. Es musste nicht die native Form des IDNs (sog. U-Label), sondern die ASCII-Darstellung (sog. ACE-Form) genutzt werden.

Beispiel:
IDN-Form: müll.de
ACE-String: xn--mll-hoa.de (Puny-Code)

Die Konvertierung erfolgt dabei nach dem sog. IDNA-Standard (RFCs 5890 bis 5894), mit Unterstützung für Unicode 5.2 und mit Hilfe des IDNA Compatibility Processing im „nontransitional“ Modus aus dem Unicode Technical Standard #46.