RewriteRule: regulärer Ausdruck kann nicht kompiliert werden. Versionsunterstützung?

RewriteRule: regulärer Ausdruck kann nicht kompiliert werden. Versionsunterstützung?

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.

verwandte Informationen