Bob: mod_rewrite und Umlautdomains

Beitrag lesen

Ausgangslage:
www.école.com/anything soll auf www.ecole.com/anything umleiten.

Versuch 1:
RewriteCond %{HTTP_HOST} ^www.école.com$ [NC]
RewriteRule ^(.*) http://www.école.com/$1 [L,R=301]
entspricht nicht dem geforderten

Versuch 2
RewriteCond %{HTTP_HOST} ^www.xn--cole-9oa.com$ [NC]
RewriteRule ^(.*) http://www.école.com/$1 [L,R=301]
das auch nicht

ob du punycode verwenden oder nicht verwenden musst, weiss ich auch nicht

Das Erste (also www.xn--cole-9oa.com), denn etwas anderes kommt serverseitig ja nicht an. Der Host-Header ist doch immer www.xn--cole-9oa.com, die Umwandlung findet clientseitig statt.

  • aber beide würden eine endlosschleife produzieren

Richtig, und aus diesem Grund funktioniert das Vorhaben nicht. Hinzu kommt noch, dass Browser auch gleich noch die Domain in der Browser-Adresszeile ändern.
Da vielen ein solches „Domain-Layout“ dann doch missfällt, leiten die IDN bzw. deren ASCII Compatible Encoding (ACE) dann doch oft auf „normale“ ASCII-Domains um...

Jetzt steht im OP aber

www.école.com/anything soll auf www.ecole.com/anything

Also IDN --> ASCII. Das spiegelt sich aber nicht in den beigefügten Regeln wieder, denn dort wird in der Substitution immer école statt ecole notiert. Wohlmöglich wird

RewriteCond %{HTTP_HOST} xn--cole-9oa.com [NC]
RewriteRule ^(.*) http://www.ecole.com/$1 [L,R=301]

gesucht? Browser fordern kein 3rd-level "www" an, natürlich kann das jemand manuell eingben, drum sollte die regEx nach links offen sein. Nach der Toplevel-Domain (com) kann noch ein Punkt oder/und :Port folgen, drum sollte sie i.d.R. auch nach rechts offen sein.