mod_rewrite mit mehreren Parametern |
Käptn Flint
Pixelschubser Threadstarter
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¶2=$2
umgewandelt in:
www.domainname.de/verzeichnis/index.php?para1=hans¶2=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!
|
 Profil
Editieren
Zitieren
|
Käptn Flint
Pixelschubser Threadstarter
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¶2=$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.
|
 Profil
Editieren
Zitieren
|
Käptn Flint
Pixelschubser Threadstarter
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.
|
 Profil
Editieren
Zitieren
|
Käptn Flint
Pixelschubser Threadstarter
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 +
|
 Profil
Editieren
Zitieren
|
Käptn Flint
Pixelschubser Threadstarter
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.
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 *
|
 Profil
Editieren
Zitieren
|
Käptn Flint
Pixelschubser Threadstarter
Beiträge: 9 |
ok, ok + statt * - wenn man weiß wie's funktioniert hast du natürlich recht.
|
 Profil
E-Mail
Editieren
Zitieren
|