Problem mod_rewrite und Prozentkodierung

mojitoweb

Mitglied
Moin.

Nach einem Serverwechsel funktioniert das mod_rewrite nurnoch teilweise. Im Grunde funktioniert es bei allen URLs, bei denen ich KEINE Prozentkodierung drin hab. In diesen Fällen bekomme ich einen Error 403 zurückgeworfen. Gibt es eine Servereistellung oder eine Option, die man bei Prozentcodierung aktivieren muss?

mfg mo
 
Zur Kodierung von Umlauten zB. nutzt man Prozentkodierung. So wird das Wort "suppengrün" als "suppengr%3Fn" (das ist nicht der richtige Kode für das ü :) ) dargestellt.

Ich komme zur Zeit nicht an die Dateien heran, aber die URL wird wie folgt umgewandelt:

webseite.de/tomate.html
=> webseite.de/index.php?adresse=tomate

Das ganze funktioniert auch nach dem Serverumzug mit allen wörtern ohne "%XX" (Prozentkodierung). Das seltsame ist, das die URL

webseite.de/suppengr%3Fn.html nicht die URL
webseite.de/index.php?adresse=suppengr%3Fn erzeugt (und damit den Verweis auf eine falsche Inhaltsseite), sondern einen "Error 304" schmeißt. Daher ist meine erste Vermutung, dass die Servereinstellungen für mod_rewrite keine Prozentkodierung zulassen, aber was muss ich jetzt machen****
 
Ich würde mal tippen, dass sich da etwas an der Unicode-Unterstützung des Servers gändert hat.

Probiere es mal so:

Code:
RewriteRule webseite.de/suppengrün.html  webseite.de/index.php?adresse=suppengrün
...also ohne etwas zu kodieren.

(!)Die .htaccess speichere UTF8-kodiert ab.
 
Ich würde mal tippen, dass sich da etwas an der Unicode-Unterstützung des Servers gändert hat.

Probiere es mal so:

Code:
RewriteRule webseite.de/suppengrün.html  webseite.de/index.php?adresse=suppengrün
...also ohne etwas zu kodieren.

(!)Die .htaccess speichere UTF8-kodiert ab.

Das funktioniert, aber sobald ich die Regel zB in

Code:
RewriteRule webseite.de/suppengr%3Fn.html  webseite.de/index.php?adresse=suppengrün

abändere und in die Browserzeile die Prozentkodierung eingebe schmeißt er wieder den Error 403.

Meine geschriebenen Quelltexte sind durch Notepad++ auf UTF-8 codiert. wie seh ich, ob es dort beim Server ein Problem geben kann, bzw wie stell ich den richtig ein. Ich hab schon per phpinfo gesucht, aber nicht so richtig was gefunden.
 
Das funktioniert, aber sobald ich die Regel zB in

Code:
RewriteRule webseite.de/suppengr%3Fn.html  webseite.de/index.php?adresse=suppengrün

abändere und in die Browserzeile die Prozentkodierung eingebe schmeißt er wieder den Error 403.

Jo, da Frage ich mich aber, wozu du es so eingibst im Browser :confused:

Heisst die Datei nun suppengrün.htmloder suppengr%3Fn.html

Das ANSI-ü wird anders kodiert als das Unicode-ü :

UTF8: suppengr%C3%BCn.html
ANSI: suppengr%3Fn.html
 
mal davon abgesehen dass es in der URL dann ein wenig bescheuert aussieht für die Suchmaschine kannst du den Fehler in PHP beheben in dem du:

PHP:
$adresse = urldecode($_GET["adresse"]);
machst, womit der String für die Datenbank wieder herrgestellt wird. Ansonsten, wenn das aus der Datenbank kommt(wovon ich mal ausgehe), dann kann durch aus der Zeichensatz ein Problem sein, oft hilft es, dort mal rumzuprobieren, zB mal diesen latin_german_utf8 einstellen(glaub der hieß so). Das kannst du im PHPMyAdmin machen
 
Das Problem ist ja nicht, das die Kodierung falsch ist, sondern das nach dem Serverwechsel die Kodierung einen Error 403 erzeugt.

Der Link, der zB im Menü erzeugt wird ist vollkommen richtig und auch gut durch Suchmaschinen lesbar:

Http://www.webseite.de/suppengr?n.html

nur leitet er mich nicht wie gewohnt nach index.php?adresse=suppengr%3Fn weiter sondern bricht mit dem 403 ab.

Die Schritte der Kodierung und Dekodierung funktionieren 100% (kommen natürlich aus der DB). Es liegt allein an dem Umgang mit dem %.
 
Wie erzeugst du denn den Link?

Hast du meinen Hinweisen zum Unterschied zwischen ANSI und UTF8 gelesen?

Der Link muss lauten:
http://www.webseite.de/suppengrün.html
und nicht
http://www.webseite.de/suppengr?n.html

Das Aufrufen des obersten links würde doch aber dazu führen, das er direkt suppengrün in die Browserzeile schreibt, also das %C3%BC direkt in ein ü umwandelt und dann würde ich doch probleme bei der dekodierung bekommen, da dann in meiner Variable nichtmehr 'suppengr%C3%BCn' sondern 'suppengrün' steht, oder sehe ich das falsch?
 
Zurück