Ich verwende Ubuntu 10.04 LTS, Apache Version 2.2.14.
Auf httpd.conf habe ich eine Umschreiberegel, die wie folgt aussieht:
RewriteRule (*UTF8)^/users/([^/])([^/]+)/(.*)$ /users/$1/$2/$1$2/$3 [L]
Die Idee besteht darin, Verzeichnisse auf meinem Server auf internationalisierte Domänennamen (IDN) einzurichten.
Ich bekomme immer wieder
RewriteRule: cannot compile regular expression
Irgendeine Idee, ob es die Dämonenversion oder etwas anderes ist?
Antwort1
(*UTF8)
ist kein gültiger regulärer Ausdruck, und ich bin mir nicht sicher, warum Sie das verlangen – Dinge wie .*
und dergleichen in Ihrem regulären Ausdruck entsprechen jedem Zeichen, egal ob es UTF8-codiert ist oder nicht. Sie beziehen sich auf Perl – nicht auf mod_rewrite, das eine explizite Aktivierung der UTF8-Unterstützung erfordert.
Bei mod_rewrite versuchen Sie, eine bestimmte Kodierung auf besondere Weise zu behandeln, was in diesem Fall einfach nicht erforderlich ist.
Dh,
RewriteRule ^/users/(.*)$ /newusers/$1 [L]
Wird zusammenpassen:
/users/café
und so weiter. Beachten Sie jedoch, dass die Verwendung von Zeichenklassen wie [a-zA-Z]
NICHT mit UTF8 übereinstimmt.