hallo,

sitze jetzt schon seit ewigkeiten an folgendem problem und freue mich über jegliche hilfe (Apache 1.3 neueste version auf redhat linux):

Ich verwende folgende RewriteRule:

^([^_]*)_([^_]*)_([^_]*)_([^_]*)_([^_]*)\.html $1\.php?category=$2\&item=$3\&shop_lang=$4\&type=$5

für URL´s mit dem muster http://www.maskworld.com.exxs.net/display-department_152_0_german_beard.html

und sie in das muster http://www.maskworld.com.exxs.net/display-department.php?category=152&item=0&shop_lang=german&type=beard

umzuwandeln. so sieht es so aus als würden statische seiten aufgerufen werden -> suchmaschinen.

Um aber sessions ohne cookies und die weitergabe der sessiondaten per url-encode zu ermöglichen, wollte ich die rule eigentlich so verwenden (weil ja php dann automatisch hinter xxxx.html per fragezeichen die sessionid und die urlencodes ranghängt):

RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_([^_]*)\.html\??(.*) $1\.php?category=$2\&item=$3\&shop_lang=$4\&type=$5\&$6

nur funktioniert sie nicht. Der hase liegt im fragezeichen begraben, welches ja den start des php variablenblocks anzeigt, also des query_strings. Da ich aber die url ja selbst schon rewrite habe ich ja schon hinter dem skriptnamen das fragezeichen in meiner rewriteten url. Deshalb versuche ich jetzt mit der rewrite rule das fragezeichen herauszufiltern, und die restlichen variablen (was auch immer da kommen mag) hinten nach einem weiteren &-Zeichen anzuhängen ($6).

Allerdings scheint mod_rewrite da ein generelles problem mit den fragezeichen bzw. deren erkennung zu haben. Eigentlich müsste man das ? escapen (also -> \?), das zweite ? ist dann als 0 oder 1 gedacht (also für den fall, daß sessionid da ist oder eben auch nicht) - funktioniert auch nicht in geschweiften klammern.

Anhand der logs konnte ich jetzt absehen, daß egal wie man die rule definiert der server bei url aufrufen wie z.b. http://www.maskworld.com.exxs.net/display-department_152_0_german_beard.html?shit=5 den rewrite mit der uri http://www.maskworld.com.exxs.net/display-department_152_0_german_beard.html initialisiert. Es wird also alles hinter dem fragezeichen ignoriert? Warum das denn? Warum ist sowas nirgendwo dokumentiert? Bzw. kannst ich das beeinflussen? Es muss doch machbar sein, daß php seine zusätzlichen variablen hinten dranhängen kann; OT: könnte man alternativ php dazu überreden als variablenabgrenzer hinter der .php endung der files ein & zu akzeptieren? /OT Und würde das dann vom server/mod_rewrite nicht ignoriert?

wie ihr seht, habe ich mich schon eine weile damit beschäftigt, aber ich komme da nicht weiter - any help is greatly appreciated.

vielen dank - gorg.



Gesendet von http://mail.yahoo.de.
3,5% Zinsen ab dem 1. EUR. Das Tagesgeldkonto mit den besten Zinsen Täglich verfügbar.
Kostenlose Kontoführung. Jetzt eröffnen! Extrakonto bei der DiBa.

Antwort per Email an