mod_rewrite und Form-Umleitung

J

Jackson100

Mitglied
Thread Starter
Dabei seit
27.12.2010
Beiträge
30
Reaktionspunkte
0
Erstmal Danke für eure Hilfsbereitschaft.

Ich kenne mich kaum mit mod_rewrite und hoffe nach 2 Tagen Googeln endlich mal eine Lösung hier zu finden.
Was ich will ist, alle Daten enthalten in einem html Form in Seite A, zur Seite B nach dem submit weiterleiten und dort die Daten in Url sauber zu empfangen z.B: site/kategorie/bücher/.... statt site=bla&kategorie=blu+ble.....

Ein Teil des Weges habe ich bereits gemacht, nur ist mein Wissen viel zu wenig um den Code in htaccess ändern zu können. Ich schaffe das saubere Weiterzuleitung, aber nur mit FORM das 1 Feld enthält. Ich will aber mehr Felder im Form haben und sobald ich ein weiteres Feld hinzufüge und spiele mit dem Code, bricht alles zusammen.
Kann mir jemand dabei helfen es zu erreichen?

Das ist was bereits klappt:

<form name="f" action="search.php" method="get">
<input name="q" type="text" />
<input type="submit" value="search" />
</form>

CODE

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^(.*&)?q=([^&]+)(&.*)?$ [NC]
RewriteRule ^search\.php$ /sitename/search/%2? [R=301,L]
RewriteRule ^search/([^&]+)$ search.php?q=$1 [L]

ERGEBNIS:
/sitename/search/OK


Jetzt will ich mein Form mit mehr als 1 Feld haben z.B

<form name="f" action="search.php" method="get">
<input name="q" type="text" />
<input name="w" type="text" />
<input type="submit" value="search" />
</form>

Bei dem Versucht den Code in htacces zu ändern, weiss ich nicht genau wo ich da das zusätzliche Feld W einfügen kann.
Mein bestes ergebnis war:

/sitename/search/OK/&w=nicht_mehr_Sauber+

Bitte kann mir einer helfen das hinzukriegen? Ich danke im Vorraus.
 
RewriteRule ^search/([^&]+)$ search.php?q=$1 [L]
RewriteRule ^search/([^&]+)$ search.php?q=$2 [L]
erscheint mir logisch, auch wenn es mir ein Rätsel ist zu was das Gesamtkunstwerk gut ist...
 
Danke für deine Antwort falkgottschalk,

es kommt leider in URL: /sitename/search/Test+Q
und php sagt: Undefined index: w wenn ich versuche das Feld w mit echo GET w. zu fangen.

Ich habe eine bessere Lösung gefunden und werde nicht weiter die Umleitung durch module rewr. machen.
Ich benötige die Form Values eigentlich um eine Suchoption auf seite B zu aktivieren sobald die GET values aus dem Form f, sich dort in der URL befinden.

Also werde ich lieber mit php die form values fangen, die umleitung mit javascr. befehlen und die umzuleitenden values mit mod-rewr. aber als link modus in die URL gesaubert senden.
Es hat auf jedenfall geklappt, und mit php habe ich zumindenst die Kontrolle und weiss was ich mache.

Ich weiss wie man saubere url mit mod-Rewr. macht, aber nur mit Links und leider nicht mit html Form, somit kombiniere ich alle 3, d.h. php, mod-rewr und javascr.
Ist keiner kurzerer Weg, aber funktioniert sauber und bringt das verlangte Ergebnis.
 
Meine Meinung: Formulardaten mit URL-Parametern übergeben halte ich persönlich für reinen Pfusch.
 
Mag sein...

ist aber sehr nutzlich für das Blättern der Seiten, besonders wenn das Suchen durch blättern aktiviert werden muss. Zumindest hatte bei mir so immer geklappt. Man sucht mit Form, sendet die Get Values im URL, und blättert auf die Seiten. z.B. Seite1 , Seite2... ohne dass, die Daten auf der Seite verschwinden.

Ich zweifel nicht daran, dass bessere Methoden gibt. Aber so hatte ich das immer perfekt gemacht, zumindest das gewüschte Ergebnis war da, deshalb.
 
Viel Erfolg..
Nach meiner Erfahrung gibt es (mindestens) 3 Prädikate für eine "Software":

a) sie funktioniert
b) sie ist sicher
c) sie ist elegant programmiert

a) ist Minimalvoraussetzung.

Je besser man wird, desto mehr adaptiert man die beiden anderen Prädikate auch noch. :)

Die geschilderten Anforderungen kann man sorgenfrei und problemlos auch mit POST realisieren.
 
Zurück
Oben Unten