Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Sonderzeichen mit mod_rewrite an QUERY_STRING übergeben

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
whobee
PostRank 1
PostRank 1
Beiträge: 27
Registriert: 19.07.2005, 00:10

Beitrag von whobee » 09.11.2009, 19:53

Hallo Leute,

ich möchte URLs für eine Suchfunktion aufbauen und hatte mir etwas in dieser Form vorgestellt:
www.meine-dom.de/meine-suche/<suchphrase>/

Habs mit folgender Regel versucht:
RewriteRule ^/meine-suche/(.*)/$ /mein-skriptchen.php?q=$1 [L,QSA]

.. in der Hoffung, die Suchephrase so über den QUERY_STRING auswerten zu können. Bei den Zeichen / und & gibts aber z.B. richtig Probleme!

Kann ich auf diesem Weg überhaupt alle beliebigen Zeichen übergeben und wie muss ich sie kodieren? (Base64 ist z.B. keine Option, ich will die Suchphrase im URL ja noch lesen können :-) )

Vielen Dank für eure Anregungen
whobee

Anzeige von ABAKUS

von Anzeige von ABAKUS »

Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

Seonudel
PostRank 2
PostRank 2
Beiträge: 36
Registriert: 16.12.2008, 16:40

Beitrag von Seonudel » 09.11.2009, 20:46

Mein Bauchgefühl sagt mir, das Du die URLs urlencoden solltest.
Wenn Du PHP nutzt schau Dir die Funktionen urlencode() und urldecode() mal an ... vielleicht hilft das ja.

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 09.11.2009, 22:31

whobee hat geschrieben:RewriteRule ^/meine-suche/(.*)/$ /mein-skriptchen.php?q=$1 [L,QSA]

.. in der Hoffung, die Suchephrase so über den QUERY_STRING auswerten zu können.
Grundsätzlich korrekt.
Bei den Zeichen / und & gibts aber z.B. richtig Probleme!
&#8230; soll bedeuten?

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


whobee
PostRank 1
PostRank 1
Beiträge: 27
Registriert: 19.07.2005, 00:10

Beitrag von whobee » 10.11.2009, 00:48

Beim Aufruf eines kodierten "&" geschieht Unerwartetes:
/meine-suche/%26
& wird von offenbar von mod_rewrite (?) decodiert. Logauszug:

Code: Alles auswählen

applying pattern '^/meine-suche/&#40;.*&#41;$' to uri '/meine-suche/&'
rewrite '/meine-suche/&' -> '/mein-skriptchen.php?q=&'
Damit ist q ist leer! Z.B. wird damit der Aufruf von
/meine-suche/Essen%26Trinken
zu
/mein-skriptchen.php?q=Essen&Trinken
Nicht so ganz, was ich erwartete, im QUERY_STRING kann man "&" urlkodiert problemlos übergeben...

Noch lustiger wird es beim Aufruf eines / :
/meine-suche/%2F
Dieser Request steht gar nicht im Rewrite-Log!
Grund:Ist die Apache-Direktive "AllowEncodedSlashes" auf "Off" (was Default ist ) dann fliegt gleich ein 404, wenn sich ein kodierter / oder \ im URL gefindet....

Bleibt die Frage: Wie gehts dennoch? (Rausfiltern? :-) )

Ich muss noch anmerken, daß ich die Rule falsch angegeben habe. Meinte:
RewriteRule ^/meine-suche/(.*)$ /mein-skriptchen.php?q=$1 [L,QSA]
Also ohne den Slash hinter der Klammer: Das ändert aber auch nichts am "Problem"...

whobee

Seonudel
PostRank 2
PostRank 2
Beiträge: 36
Registriert: 16.12.2008, 16:40

Beitrag von Seonudel » 10.11.2009, 02:18

Was willst Du eigentlich erreichen?
Erzeugst Du die URLs selber oder willst Du möglichst alle Problemfälle abfangen, allen Schrott den ein User eintippen könnte rausfiltern?

Hast Du das urlencode() mal getestet?

Bauchladen
PostRank 6
PostRank 6
Beiträge: 388
Registriert: 24.04.2005, 13:51
Wohnort: Hamburg

Beitrag von Bauchladen » 10.11.2009, 08:49

Code: Alles auswählen

RewriteEngine On
RewriteRule search/&#40;.*&#41; /index.php?q=$1 &#91;L&#93;
# Geht auch mit &#91;L,NE&#93; falls notwendig

Code: Alles auswählen

<?php

header&#40;'content-type&#58; text/plain; charset="utf-8"'&#41;;
echo $_GET&#91;'q'&#93;;

?>

Code: Alles auswählen

http&#58;//www.mydom.com/search/öäüÖÄÜß/askdaskdj\


Grüße
Bild

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag