Seite 1 von 1

RewriteRule klappt bei mehreren Parametern nicht.

Verfasst: 08.09.2005, 08:12
von highflyer
Hi Leute,
ich habe eine Suchseite, der ca. 50-100 Einträge ausspucken kann. Angezeigt werden immer 10. Zur nächsten 10 bin ich bisher gewechselt, indem ich die suchvariablen angehängt hab. Also z.B.
suche.php?var1=bla&var2=blub&var3=boah&order=machmal&by=irgendeinezahl

Einige Variablen können übrigens auch mal leer sein. Je nach dem ob der User Optionen ausgewählt hat oder nicht.

Ich habe nun mein
rewriterule suche-(.*)-(.*)-(.*)-(.*)-(.*) \.htm$ suche.php?var1=1$&var2=2$&var3=3$&order=4$&by=5$

Den Link zu den nächsten 10 Ergebnissen habe ich dementsprechend umgebaut.
suche-'.($var1).'-'.($var2).'-'.($var3).'-'.($order).'-'.($by).'.htm
Es klappt aber nicht so wie ich das möchte :(
Das Gute ist dass er keine Fehlermeldung zeigt, aber die Suchergebnisse sind alle weg. Also anstatt er z.B. die nächsten 20 anzeigt, kommt der Standardtext "keine Suchergebnisse". :evil:

Wer hat Erfahrungen mit Parameterübergabe insbesondere mit Suchseiten über mehrer Seiten verteilt und das ganze mit htaccess und modrewrite?

Vielen Dank

Verfasst:
von

Verfasst: 08.09.2005, 10:08
von casino
Du hast da was verdreht..

Wenn du die Variablen mit $1, $2 usw. - nicht mit 1$ übergibst, dann wirds bestimmt laufen ;)

Ciao Robby

Verfasst: 08.09.2005, 11:18
von highflyer
Sorry, das war ein Postingfehler von mir. Die Variablen sind schon richtig eingetragen. Hier der wirklich Rewriterule
^suche(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)\.htm$ /search.php?min=$1&geschlecht=$2&sgeschlecht=$3&minage=$4&maxage=$5&spitzname=$6&plz=$7&gewerblich=$8&privat=$9&land=$10&order=$11&by=$12

Verfasst: 08.09.2005, 11:47
von casino
Solang 9 Variablen übergeben werden gibts kein Problem, aber sobald du eine weitere Var wie z.B. land=$10 übergeben willst, kommt die RewriteEngine durcheinander. Dann wird wieder die erste Variable übergeben und einfach noch ne 0 rangehängt.

Vielleicht solltest du mal überprüfen ob du wirklich alle Variablen brauchst. Oder, noch besser:
Übergib einfach alles was nach suche(.*) steht in einer einzigen Variable an dein Script und lass php die Arbeit mit dem zerpflücken der Vars machen.

in der .htaccess:

Code: Alles auswählen

RewriteRule ^suche([A-Za-z0-9-]*)\.htm$ /search\.php?var=$1
und in der search.php:

Code: Alles auswählen

$vars = explode('-', $_GET["var"]);
So hast du alle Variablen sauber in nem Array drin und kannst damit weiterarbeiten.

Ciao Robby

Verfasst: 08.09.2005, 13:42
von highflyer
Erstmal danke, das wusste ich nicht dass es nur 9 variablen verarbeiten kann. Es klappt aber immer noch nicht, ich bleibe bei den ersten 10 Treffern kleben. Folgendes hab ich gemacht:

In die htaccess:
RewriteRule ^suche([A-Za-z0-9-]*)\.html$ /search\.php?var=$1

Suchlink: <a href="suche<? echo $naechste.'-'.$geschlecht.'-'.$sgeschlecht.'-'.$minage.'-'.$maxage.'-'.$spitzname.'-'.$plz.'-'.$gewerblich.'-'.$privat.'-'.$land.'-'.$order.'-'.$by ?>.html">Weiter</a>

Vor dem Suchlink:
$vars = explode('-', $_GET["var"]);
$var1=$vars[0];
$var2=$vars[1];
$var3=$vars[2];
$var4=$vars[3];
$var5=$vars[4];
$var6=$vars[5];
$var7=$vars[6];
$var8=$vars[7];
$var9=$vars[8];
$var10=$vars[9];
$var11=$vars[10];
$var12=$vars[11];
$var='min='.$var1.'&geschlecht='.$var2.'&sgeschlecht='.$var3.'&minage='.$var4.'&maxage='.$var5.'&spitzname='.$var6.'&plz='.$var7.'&gewerblich='.$var8.'&privat='.$var9.'&land='.$var10.'&order='.$var11.'&by='.$var12;
Jetzt bleibt er bei den ersten 10 Treffern kleben, keine Fehlermeldungen. Das ist schon mal ein gutes Zeichen. Irgendwo liegt da bei mir der Denkfehler. Wäre dankbar wenn mir jemand helfen kann.

RewriteRule klappt bei mehreren Parametern nicht.

Verfasst: 08.09.2005, 15:30
von Maschenka
Hast du die Möglichkeit, auf die Serverlogs zuzugreifen? Du könntest dann gucken, wie genau das mit dem Rewrite abläuft.
https://httpsd.apache.org/docs/mod/mod_ ... RewriteLog

Verfasst: 08.09.2005, 15:59
von casino
Puh, du machst dir dein Script aber auch unnötig umständlich ;)

An der hta und am php-schnipsel kanns definitiv nicht liegen.
Kommen also nur noch die Variablen selbst in Frage. Überprüf mal, ob in deinen übergebenen Var (am besten bei der, wo abgebrochen wird), ob auch wirklich nur Werte von A-Z a-z 0-9 und - vorkommen. Sobald n Slash o.ä. vorkommt wird der Rewrite abgebrochen.

Mach mal aus deiner Rule n Redirect ([R] ans Zeilenende), dann siehst du was alles ans Script übergeben wird.

Ciao Robby

Verfasst: 08.09.2005, 16:44
von highflyer
Hallo,
vielen Dank für euch. Hab es hingekriegt. Das Problem lag daran, dass danach die Variablen verarbeitet wurden und sie wurden durch das Array komplett überschrieben. Also hab ich beim Auslesen des Arrays nun immer eine if abfrage und es läuft, also
$vars = explode('-', $_GET["var"]);
if ($vars[0]!="") {$min=$vars[0];}
if ($vars[1]!="") {$geschlecht=$vars[1];}
if ($vars[2]!="") {$sgeschlecht=$vars[2];}
if ($vars[3]!="") {$minage=$vars[3];}
if ($vars[4]!="") {$maxage=$vars[4];}
if ($vars[5]!="") {$spitzname=$vars[5];}
if ($vars[6]!="") {$plz=$vars[6];}
if ($vars[7]!="") {$gewerblich=$vars[7];}
if ($vars[8]!="") {$privat=$vars[8];}
if ($vars[9]!="") {$land=$vars[9];}
if ($vars[10]!="") {$order=$vars[10];}
if ($vars[11]!="") {$by=$vars[11];}

Vielen Dank jetzt steht einem validen html nichts im wege juhuu :D

RewriteRule klappt bei mehreren Parametern nicht.

Verfasst: 08.09.2005, 16:54
von casino
Schön,
aber das fertige Werk wollen wir später schon sehn 8)

Ciao Robby

Verfasst: 08.09.2005, 17:48
von highflyer
Ähm......... das Werk steht eigentlich schon und ich optimiere es erstmal.
Wird zwar noch erweitert aber es steht im Netz. Möchte es aber nicht unbedingt hier posten. :oops: :wink: :lol:
Kriegst per Privatmail die Url ok?
Und nochmals danke