2009-04-14 5 views
0

Ich versuche, eine URL mit GET-Daten aus einem Formular neu zu schreiben. Dies funktioniert einwandfrei, wenn Strings nur mit englischen Buchstaben übergeben werden. Aber wenn ich norwegische Zeichen festlege (dies ist eine norwegische Seite), wird nur die nicht umgeschriebene URL angezeigt. Meine mod_rewrite Sätze wie folgt aussieht:schreiben mod_rewrite für Formulardaten

RewriteCond %{REQUEST_URI} /resultpage.php$ 
RewriteCond %{QUERY_STRING} ^querystring=([a-zæøåäëöA-ZÆØÅÄËÖ0-9-\+]+)$ 
RewriteRule ^(.*)$ /sok/%1? [R=301,L] 
RewriteRule ^sok/(.*)$ /resultpage.php?querystring=$1&a=1 [L] 

I norwegische Zeichen in URL verwenden, ist nicht von einem Formular geschrieben und das funktioniert super.

Irgendwelche Vorschläge?

Antwort

1

Die norwegischen Zeichen sind wahrscheinlich URL-codiert.

Ich kann nicht aus den Dokumenten sehen, wie Mod Neuschreiben wird mit diesen umzugehen.

Bei einer Vermutung

RewriteCond %{QUERY_STRING} ^querystring=([a-zA-Z0-9-+%]+)$ 

Kann arbeiten, wie es die URL codiert erweiterte Zeichen abholen, aber es wird jedes Zeichen, nicht nur den Satz, den Sie wollen ermöglichen. Sie können dies immer auf der Anwendungsebene beheben.

1

würde ich [^&] statt:

RewriteCond %{REQUEST_URI} ^/resultpage\.php$ 
RewriteCond %{QUERY_STRING} ^querystring=([^&]+)$ 
RewriteRule ^resultpage\.php$ /sok/%1? [R=301,L] 

Und Sie können es noch vereinfachen:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /resultpage\.php\?querystring=([^&\s]+)\s 
RewriteRule ^resultpage\.php$ /sok/%1? [R=301,L] 

diese Lösung Sie sogar die a=1 Flagge der zweiten RewriteRule weg verlassen kann.