Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » Server-Administration » mod_rewrite mit mehreren Parametern Antworten
mod_rewrite mit mehreren Parametern

Käptn Flint
Pixelschubser


Beiträge: 9


Hallo und ein neues mod_rewrite Problem

Die Aufruf www.domainname.de/verzeichnis/hans/123
wird durch die Regel:
RewriteEngine On
Options +FollowSymlinks
RewriteBase /verzeichnis/
RewriteRule ^(.*)/(.*)$ /verzeichnis/index.php?para1=$1&para2=$2

umgewandelt in:
www.domainname.de/verzeichnis/index.php?para1=hans&para2=123

soweit so gut.
Wie gehe ich aber damit um wenn ich jetzt weniger oder mehr Parameter übergeben muß?

  Profil   E-Mail   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


neue RewriteRules schreiben und dazupacken. Aber aufpassen, dass es keine Überschneidungen gibt!

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

Käptn Flint
Pixelschubser


Beiträge: 9


Ich glaube das mit den Überschneidungen ist genau mein Problem:

So probier ich das aus(ich hab die .html Endung reingeschrieben weil sich sonst mein Browser immer aufhängt wenn ich nur einen Wert übergebe???):

RewriteRule ^(.*)/(.*).html$ /verzeichnis/index.php?para1=$1&para2=$2
RewriteRule ^(.*).html$ /verzeichnis/index.php?para1=$1

Erster Aufruf mit einem Parameter:
www.domainname.de/verzeichnis/wert1.html
$para1=wert1 (richtig)

Zweiter Aufruf mit zwei Parametern:
www.domainname.de/verzeichnis/wert1/wert2.html
$para1=/verzeichnis/index.php/wert2 (häh?)
$para2= nicht definiert

und hier bin ich mit meinem Latein am Ende!

  Profil   E-Mail   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


.* gilt doch vorerst schon für alle Zeichen, also auc hden Slash (/). Da müsstest du schon genauere Zeichen definieren: [a-zA-Z0-9] oder sowas.

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

Käptn Flint
Pixelschubser


Beiträge: 9


Also ich geb direkt zu, dass ich mich mit der Syntax der regulären Ausdrücke (noch) nicht auskenne, aber deswegen poste ich ja hier.

ist es das was du für Regel2 meinst:
RewriteRule ^ [a-zA-Z0-9] .html$ /verzeichnis/...usw.
alternativ hab ich dann noch den hier ausprobiert:
RewriteRule ^ ([a-zA-Z0-9]) .html$ /verzeichnis/...usw.
Hat was von try'n error! Beide Male wurde auf jeden Fall die Seite nicht gefunden
(www.domainname.de/verzeichnis/wert1.html ).

Nichts desto trotz habe ich den komischen Wert von $para1 bei der Übergabe von 2 Parametern nicht verstanden.

  Profil   E-Mail   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


also wenn überhaupt geht die zweite möglichkeit, aber wo das genau scheitert, weiß ich auch nicht gerade.

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

Käptn Flint
Pixelschubser


Beiträge: 9


Den Stern vergessen!

So geht's:
RewriteRule ^ ([a-zA-Z0-9]*) .html$ /verzeichnis/...usw.

Tausend Dank

  Profil   E-Mail   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


jo, der Stern bedeutet aber, dass auch 0 Zeichen erlaubt sind. Probier mal lieber ein +

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

Käptn Flint
Pixelschubser


Beiträge: 9


jo, der Stern bedeutet aber, dass auch 0 Zeichen erlaubt sind.

Das ist ja egal. 0 Zeichen bedeutet ja das gleiche als ob ich gar keinen Parameter übergebe - dann kann ich ja direkt statisch verlinken. Mir geht es bei der ganzen Sache darum, dass ich die URLs von dynamischen Projekten suchmaschinenfreundlicher machen kann. Wenn ich also Parameter wie z.B. Kategorie, Subkategorie und ID brauche, versuche ich bei der Projektplanung nach Möglichkeit Kategorien/Bereiche mit suchmaschinenfreundlichen Zeichenketten zu besetzen:
www.domainname/123/suchmaschenwort1/suchmaschinenwort2.htm
also die Parameter nicht nur technisch sondern auch inhaltlich zu separieren.

Probier mal lieber ein +

geht bestimmt auch, aber ich hab nicht so ganz verstanden wie du das meinst
(+ statt * ?).

trotzdem danke nochmal

  Profil   E-Mail   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


Ich finde es nur unnötig, dass man es erlaubt einem Paramter keine Daten zu übergeben. U.U. kann das sogar Probelme machen. Desshalb: + statt *

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

Käptn Flint
Pixelschubser


Beiträge: 9


ok, ok + statt * - wenn man weiß wie's funktioniert hast du natürlich recht.

  Profil   E-Mail   Editieren   Zitieren
 

Antworten
Nach oben