[.htaccess] RewriteRule mit verschiedenen GET Variablen

digiTALE

Lt. Junior Grade
Registriert
Juli 2004
Beiträge
270
Wie kann ich die RewriteRule so gestalten, das wenn ich verschiedene GET Variablen besitze wie z. B.


index.php?cat=unternehmen&subcat=referenzen&seite=1

oder

index.php?cat=unternehmen&subcat=mitarbeiter&zeige=max-mustermann


Dann weiß die htaccess ja nicht, ob er die GET Variable hinten als "seite" oder als "zeige" interpretieren soll!? Wie kann ich das anstellen?
 
Bei Rewrite-Rules werden reguläre Ausdrücke benutzt. Die kannst du einsetzen um "seite" oder "zeige" unterschiedlich zu behandeln...

gruß
hostile
 
Aber der Ansatz fehlt mir!
Feste GET Variablen die sich nicht ändert, also in der htaccess festgelegt sind, kann ich ganz gut umsetzen, aber ändert sich eine Variable bekomm ich es nicht hin und es wird als "seite" interpretiert.

Code:
RewriteEngine on
RewriteRule ^/([a-z]+)/([a-z]+)/([a-z]+)/$ /index.php?cat=$1&subcat=$2$seite=$3

Wie muss ich denn die "seite" so umgestalten, das auch "zeige" interpretiert wird. Habe bisher nichts zu diesem Fall was gefunden!


Mfg digiTALE
 
Also du kannst ja auch ne RewriteCond anlegen, wo du prüfst, ob der letzte teil der url ein "zeige" enthält, dann baust du die php-url mit der variable "zeige" zusammen. wenn nicht, wird dann einfach "seite" nehmen.

gruß
hostile
 
Ich habe erst gerade mit .htaccess angefangen zu arbeiten, da weiß ich noch nicht wie die Bedingung im RewriteCond aussehen soll.

Bisher sieht die so aus und funktiniert auch:
Code:
RewriteEngine on

RewriteRule ^([a-z]+)/$ index.php?cat=$1 [L]

RewriteRule ^([a-z]+)/([a-z]+)/$ index.php?cat=$1&subcat=$2 [L]

RewriteRule ^([a-z]+)/([a-z]+)/([0-9]+)/$ index.php?cat=$1&subcat=$2&seite$3 [L]

RewriteRule ^unternehmen/presse/(2005|2006|2007|2008|2009)/([0-9]+)/([a-z]+)/$ index.php?cat=unternehmen&subcat=presse&jahr=$1&monat=$2&id=$3 [L]

Wie soll die RewriteCond aussehen, das wie hier "jahr" und "seite" nicht verwechselt wird?


Mfg digiTALE
 
Zeile 2: http://pd930.hostile.dyndns.info/~hostile/unternehmen/presse/

Zeile 3: http://pd930.hostile.dyndns.info/~hostile/unternehmen/presse/1/

Zeile 4: http://pd930.hostile.dyndns.info/~hostile/unternehmen/presse/2008/01/ab/

Geht alles... oder täusch ich mich?

Code:
RewriteEngine on
RewriteRule ^([a-z]+)/$ /cgi-bin/mycgi.cgi?cat=$1 [L]
RewriteRule ^([a-z]+)/([a-z]+)/$ /cgi-bin/mycgi.cgi?cat=$1&subcat=$2 [L]
RewriteRule ^([a-z]+)/([a-z]+)/([0-9]?)/$ /cgi-bin/mycgi.cgi?cat=$1&subcat=$2&seite=$3
RewriteRule ^unternehmen/presse/(2005|2006|2007|2008|2009)/([0-9]+)/([a-z]+)/$ /cgi-bin/mycgi.cgi?cat=unternehmen&subcat=presse&jahr=$1&monat=$2&id=$3 [L]

gruß
hostile
 
Ah alles klar danke, weiß auch wo der Fehler war, hab beim 3. RewriteRule bei der "seite" hinten das "=" vergessen, deshalb konnte es auch nicht funktionieren *lol

Mfg digiTALE
 
Hallo zusammen,

ich wollte jetzt meine Homepage auch mit den Rewrite Tools verbessern.
Weiss aber nicht so ganz wie ich daran gehen soll.
Muss ich dazu alle meine Links auf der Website umbaunen, dass Sie in diesem Format sind:
HTML:
<a href="index.php5/10/1/2/2">Link1</a> 
<!--anstatt:-->
<a href="index.php5?cat=10&year=1&folder=2&page=2">Link1</a>
Oder kann ich die Links alle so lassen und htaccess schreibt das für mich in der Adresszeile um?
Habe leider keine Tutorial oder ähnliches gefunden wo das erklärt wird.


Grüße

tewes
 
Hi, ich glaube du musst all deine Links anpassen. Hmm wird sich bestimmt schwierig erweisen wenn man eine große Webseite betreibt.

Aber wenn du die Links änderst, dann lass das index.php weg und schreib nur:
Code:
<a href="/10/1/2/2">Link1</a>

hin.

Die Webseite behandelt mod_rewrite und in deren Forum findest du viele interessante Tipps und kannst natürlich auch selber Probleme posten, wenn es nicht schon vorhanden ist.


Mfg digiTALE
 
Hallo digiTale,

danke für deinen Link. Werde mir die Seite mal ansehen.
Meine Website ist nicht so groß, und 70% der Links werden in Funktionen erstellt ;)

Grüße

krizzel
 
Zurück
Oben