Wenn man in der htaccess einen Fehler hat kommt es leicht zu einem Internal Serverfehler.
In meinem Fall war es ein überschüssiges Leerzeichen:
RewriteRule ^(.*)_(.*)_(.*).html$ datei.php ?v1=$1
statt:
RewriteRule ^(.*)_(.*)_(.*).html$ datei.php?v1=$1
Also immer gut aufpassen.
Notizen rund um das Thema Programmierung mit dem Schwerpunkt PHP und Zend Framework 2 (ZF2)
Dienstag, 5. März 2013
Freitag, 1. März 2013
Mod-Rewrite schneidet url ab
Es hatte mich einige Zeit gekostet heraus zufinden warum folgender Mod-Rewrite Befehl scheinbar nicht richtig arbeit:
RewriteRule ^(.*).html$ irgendwas.php?v1=$1
Wenn normale Zeichen gesendet wurden, funktioniert das prima aber sobald ein sonderzeichen ins spiel kam änderte sich das. Insbesondere durch das &-Zeichen.
Aus Bequemlichkeit habe ich die Begriffe alle HTML kodiert in er Datenbank gespeichert und so wandern diese dann auch in die Links wo sie urlcodiert ann so aussehen: M%26ouml%3Bbel+Lagerung
Grundsätzlich kein Problem - für PHP aber schon. Da PHP anscheinend vor dem verarbeiten der GET - Parameter diese Decodiert. Was dazu führt das in PHP eine weitere Variable angelegt wird:
Zunächst dachte ich MOD-Rewrite würde einen Fehler Produzieren aber es ist PHP!
Schaut man sich den Query String an wurde alles richtig übermittelt - aber ist decodiert(!):
_SERVER["QUERY_STRING"] v1=Möbel+Lagerung_Wolfsheim_55578
Ich nutze nun halt den Query String. Alternativ kann man auch alle &-Zeichen aus dem Link entfernen und später wieder einfügen.
Edit:
Die oben genannten infos findet man mit der funktion phpinfo() - der Fehler liegt also bei PHP nicht im mod_rewrite
RewriteRule ^(.*).html$ irgendwas.php?v1=$1
Wenn normale Zeichen gesendet wurden, funktioniert das prima aber sobald ein sonderzeichen ins spiel kam änderte sich das. Insbesondere durch das &-Zeichen.
Aus Bequemlichkeit habe ich die Begriffe alle HTML kodiert in er Datenbank gespeichert und so wandern diese dann auch in die Links wo sie urlcodiert ann so aussehen: M%26ouml%3Bbel+Lagerung
Grundsätzlich kein Problem - für PHP aber schon. Da PHP anscheinend vor dem verarbeiten der GET - Parameter diese Decodiert. Was dazu führt das in PHP eine weitere Variable angelegt wird:
Variable | Value |
---|---|
_REQUEST["v1"] | M |
_REQUEST["ouml;bel_Lagerung_Wolfsheim_55578"] | no value |
_GET["v1"] | M |
_GET["ouml;bel_Lagerung_Wolfsheim_55578"] | no value |
Zunächst dachte ich MOD-Rewrite würde einen Fehler Produzieren aber es ist PHP!
Schaut man sich den Query String an wurde alles richtig übermittelt - aber ist decodiert(!):
_SERVER["QUERY_STRING"] v1=Möbel+Lagerung_Wolfsheim_55578
Ich nutze nun halt den Query String. Alternativ kann man auch alle &-Zeichen aus dem Link entfernen und später wieder einfügen.
Edit:
Die oben genannten infos findet man mit der funktion phpinfo() - der Fehler liegt also bei PHP nicht im mod_rewrite
Abonnieren
Posts (Atom)