Seite 1 von 1

mod_rewrite Frage

Verfasst: 18.07.2006, 10:20
von Steff
Hallo, brauche dringend Hilfe

1. Frage
ich möchte von :
ordner/datei.php?var=kann-unterschiedlicher-Text-sein
nach
ordner/kann-unterschiedlicher-Text-sein.html

RewriteRule ^ordner/(.*)\.html$ ordner/datei.php?var=$1
funktioniert nicht !!

2. Frage
geht folgendes :
www.domain.tld/ordner/datei[1-17].php?var=Text

RewriteRule ^ordner/(.*)\/(.*)\.html$ ordner/$1.php?var=$2

Vielen Dank
Steffen

Verfasst:
von

Re: mod_rewrite Frage

Verfasst: 18.07.2006, 11:24
von haha
Steff hat geschrieben:ich möchte von :
ordner/datei.php?var=kann-unterschiedlicher-Text-sein
nach
ordner/kann-unterschiedlicher-Text-sein.html

RewriteRule ^ordner/(.*)\.html$ ordner/datei.php?var=$1
funktioniert nicht !!
Nein, kann auch nicht, denn in der Anweisung wandelst Du ordner/bla in ordner/datei?bla um, nicht wie Du möchtest ordner/datei?bla in ordner/bla. Weiterhin fehlen RewriteEngine und RewriteBase.

Eventuell möchtest Du Dir aber nochmal überlegen, was reingehen und was rauskommen soll, und statt "funktioniert nicht" eine brauchbare Fehlerbeschreibung (EVA = Eingabe (benutzte URL), Verarbeitung (vollständige mod_rewrite-Konfiguration), Ausgabe (ausgegebene URL bzw. Anzeige des Browsers)) liefern.

Es ist davon abgesehen bisweilen hilfreich, RewriteRule mit [R] am Ende der Zeile zu Prüfzwecken zu einer externen Weiterleitung zu bewegen, weil man dann auch die neue URL in der Adressleiste des Browsers sehen kann.
geht folgendes :
www.domain.tld/ordner/datei[1-17].php?var=Text

RewriteRule ^ordner/(.*)\/(.*)\.html$ ordner/$1.php?var=$2
Zu [1-17]: mod_rewrite kann nicht zählen. Der Bindestrich steht für eine Reihe von Schriftzeichen, zum Beispiel "a bis z" oder "Ziffer 0 bis Ziffer 9". Wenn Du eine Reihe von Nummer 1 bis Nummer 17 haben möchtest, musst Du das auf Schriftzeichenbasis machen: 'Entweder Ziffer 1 bis 9, oder Ziffer 1, gefolgt von Ziffer 0 bis Ziffer 7'. Als Muster wäre das '([1-9]|1[0-7])' (ohne Anführungszeichen).

Dein Muster war schon im Großen und Ganzen funktionsfähig, allerdings solltest Du grundsätzlich die gewünschten Textpassagen so genau wie möglich beschreiben. '.*' trifft auf alles zu, in diesem Fall auf '10/bla.html' genauso wie auf 'ueberuns/impressum.html' und 'schoenes/wetter/heute.html'.
Für 'ordner/zahl1bis17/bla.html' müsste sich '^ordner/([1-9]|1[0-7])/[^/]+\.html' besser eignen.

Verfasst: 18.07.2006, 11:56
von Steff
ordner/datei.php?var=kann-unterschiedlicher-Text-sein
nach
ordner/kann-unterschiedlicher-Text-sein.html

RewriteRule ^ordner/(.*)\.html$ ordner/datei.php?var=$1
Ich dachte das wäre ausreichend beschrieben.
aus
www.do main.tld/ordner/datei.php?id=kann-unterschiedlicher-Text-sein
soll
www.do main.tld/ordner/kann-unterschiedlicher-Text-sein.html
werden

------------------------------

bei der 2. Frage soll "datei[1-17]" eigentlich nur für verschiedene Dateinamen stehen.

www.do main.tld/ordner/datei-hallo.php?var=Welt
www.do main.tld/ordner/datei-welt.php?var=Hallo
usw.

daraus soll entstehen :
www.do main.tld/ordner/hallo/Welt.html
www.do main.tld/ordner/welt/Hallo.html

RewriteRule ^ordner/(.*)\/(.*)\.html$ ordner/$1.php?var=$2

Steffen