[mod_rewrite] unbekannt viele Referenzen

DelphiKing

King with a crown
ID: 46719
L
20 April 2006
6.554
729
Aloha,

ich hab mir ein kleines mod_rewrite-Script geschrieben, um dem Nutzer und der Suchmaschine leserliche URLs ohne Parameter anzubieten.
Dabei hab ich aber noch das Problem, das ab und an auch noch ein paar Parameter (undefiniert wie viele oder welche) mit übergeben werden sollen (z.b. Sortierparameter, die eben noch irgendwie untergebracht werden müssen).

Die URL soll also z.B. wie folgt aussehen:
".../test,var1=a,var2=b,var3=c"

Diese wird dann zu einem
".../test.php?var1=a&var2=b&var3=c"

Es könnte aber auch noch 10 Parameter mehr geben (bissl übertrieben evtl) und die könnten auch ganz anders heißen.

Was ich also suche ist ein "Wandel alle ",$1=$2" um in "&$1=$2" , egal wie viele da sind".. (wie) geht sowas?


Was mich ja auch ein wenig wundert ist die Tatsache, dass es nur 9 Referenzen gibt, die man mit $1, $2, .. etc angeben kann? Wieso ist das so?^^

grüßle vom mod_rewrite-noob
flo
 
In solchen Fällen bietet sich an, im PHP-Script auf die Request-URI zuzugreifen und diese selbst zu parsen.
siehe: phpinfo()
 
Soweit ich weiß gibt es 99 Referenzen und Dein Problem lässt sich lösen indem Du den QueryString einfach intern anhängst. Schau mal hier nach.


Das Flag zum Anhängen ist [QSA] (query string append) hinter der Rule und es ist aber dort leider nicht aufgeführt. Hier sind alle aufgeführt.
 
Soweit ich weiß gibt es 99 Referenzen
"Back-references are identifiers of the form $N (N=0..9), which will be replaced by the contents of the Nth group of the matched Pattern. "
Leider nicht... "$10" wird zu "[ersetzung]0"

in Problem lässt sich lösen indem Du den QueryString einfach intern anhängst. Schau mal hier nach. [...]
Hm, so ganz ist mir nicht klar was dann passiert? Oo


Ich habs jetzt mal so gemacht wie MrToiz es geschildert hat und das funktioniert so weit auch und ist sowas zufriedenstellend..

Dafür hab ich jetzt ein neues Problem... etwa bei <form>-Aufrufen mittels GET werden die Parameter ja noch normal in die URL eingefügt.. die möchte ich dann eben noch normal an die URL anhängen ..
Ginge das evtl. mit strolch00s Methode?
Weil komischerweise erkennt er
Code:
.....(\?(.*))?$
nicht...
Das sollte doch eigentlich den Teil nach dem "?" (z.B. test.php?x=1 ) matchen .. tut es aber nicht?
 
Code:
.....(\?(.*))?$

Geht nicht? Wenn ich es teste wird mir in $1 alles was nach dem ersten ? kommt incl. dem ? angezeigt, in $2 das gleiche ohne führendes ?
 
Prinzipiel würde ich mal sagen du hast ein konzeptionalen fehler. Wieso brauchst du zich Parameter um "relevante" Daten auszulesen? Ausserdem bringt es dir nicht unbedingt viel nichts sagende Parameter umzuformen. Suchmaschinen nehmen auch Seiten mit ? in den Index auf. Wenn du wirklich deine Seite für Suchmaschinen optimieren willst solltest du das ganze vielleicht nochmal von grundauf überdenken. Ja ich weiß, der Aufwand ist hoch, aber es kann sich durchaus lohnen eine Seite direkt für Suchmaschinen mit zuplannen. Solche Aktionen wie wir rationalisieren mal schnell alle ? weg bringen im endeffekt nicht wirklich viel und kosten je nach Ausgangslage auch eine menge Zeit.