mod_rewrite
Till
- programmiertechnik
Moin!
Ich versuche gerade eine 'rewrite rule' zu erstellen mit der ich meine Seite steuern will.
URL: http://example.net/1/2/3 zu /?eins=1&zwei=2&drei=3
Das ist auch ganz einfach:
RewriteRule ^(.*)/(.*)/(.*) /?eins=$1&zwei=$2&drei=$3
Ich möchte aber wenn 2 und 3 oder nur 3 nicht gegeben sind das 0 gesannt wird:
http://example.net/1
/?eins=$1&zwei=0&drei=0
http://example.net/1/2
/?eins=$1&zwei=2&drei=0
Kann mir jemand weiter helfen?
hi,
Kann mir jemand weiter helfen?
wobei?
du hast uns ja nicht einmal mitgeteilt, was an deinem vorhaben derzeit nicht klappt.
gruss,
wahsaga
RewriteRule ^(.*)/(.*)/(.*) /?eins=$1&zwei=$2&drei=$3
Klappt:
http://example.net/1/2
http://example.net/1/2/
http://example.net/1/2/3
Läuft nicht:
http://example.net/1
http://example.net/1/
http://example.net/1/2/3/
Ich hab null ahnung von regulären ausdrücken und mod_rewrite :-/
mfg Till
hi,
RewriteRule ^(.*)/(.*)/(.*) /?eins=$1&zwei=$2&drei=$3
Klappt:
http://example.net/1/2
wirklich?
http://example.net/1/2/
http://example.net/1/2/3
Läuft nicht:
http://example.net/1
natürlich, darauf trifft deine bedingung ja auch nicht zu.
http://example.net/1/
dito.
http://example.net/1/2/3/
dito.
m.E. brauchst du mehrere separate regeln für dein vorhaben.
RewriteRule ^([0-9]*)/([0-9]*)/([0-9]*)/?$ /?eins=$1&zwei=$2&drei=$3
RewriteRule ^([0-9]*)/([0-9]*)/?$ /?eins=$1&zwei=$2&drei=0
RewriteRule ^([0-9]*)/?$ /?eins=$1&zwei=0&drei=0
gruss,
wahsaga
p.s.:
RewriteRule ^([0-9]*)/([0-9]*)/([0-9]*)/?$ /?eins=$1&zwei=$2&drei=$3
RewriteRule ^([0-9]*)/([0-9]*)/?$ /?eins=$1&zwei=$2&drei=0
RewriteRule ^([0-9]*)/?$ /?eins=$1&zwei=0&drei=0
RewriteRule ^([0-9]+)/([0-9]+)/([0-9]+)/?$ /?eins=$1&zwei=$2&drei=$3
RewriteRule ^([0-9]+)/([0-9]+)/?$ /?eins=$1&zwei=$2&drei=0
RewriteRule ^([0-9]+)/?$ /?eins=$1&zwei=0&drei=0
und kann evtl. auch sein, dass man /? noch durch (/?) ersetzen muss.
gruss,
wahsaga
Moin!
und kann evtl. auch sein, dass man /? noch durch (/?) ersetzen muss.
Bedenke, dass die URL immer mit dem "/" am Anfang anfängt, nicht mit einer Zahl.
- Sven Rautenberg
hi,
und kann evtl. auch sein, dass man /? noch durch (/?) ersetzen muss.
Bedenke, dass die URL immer mit dem "/" am Anfang anfängt, nicht mit einer Zahl.
tut sie ja auch, bei meinen regeln.
mit /? war der optionale trailing slash gemeint.
gruss,
wahsaga
Moin!
und kann evtl. auch sein, dass man /? noch durch (/?) ersetzen muss.
Bedenke, dass die URL immer mit dem "/" am Anfang anfängt, nicht mit einer Zahl.
tut sie ja auch, bei meinen regeln.
Nein.
RewriteRule ^([0-9]+)/([0-9]+)/([0-9]+)/?$ /?eins=$1&zwei=$2&drei=$3
RewriteRule ^([0-9]+)/([0-9]+)/?$ /?eins=$1&zwei=$2&drei=0
RewriteRule ^([0-9]+)/?$ /?eins=$1&zwei=0&drei=0
mit /? war der optionale trailing slash gemeint.
Das ist mir klar. Um den gehts hier aber nicht.
- Sven Rautenberg
hi,
tut sie ja auch, bei meinen regeln.
Nein.
na sowas, hatte ich
RewriteBase /
etwa vergessen hinzuschreiben? *g*
hast natürlich recht.
gruss,
wahsaga
Hallo,
RewriteRule ^([0-9]+)/?$ /?eins=$1&zwei=0&drei=0
^
Hat das Fragezeichen im Ersatz-Ausdruck (oder wie man den hinteren Teil auch immer nennt) eine besondere Bedeutung, oder ist es schlicht ein Tippfehler?
Grüße, Alex.
Hallo,
Sorry, ich bin sooo blöd!
Es geht ja um einen Query-String.
(Bitte vorheriges Posting einfach vergessen!)
Grüße, Alex.
hi,
Sorry, ich bin sooo blöd!
Es geht ja um einen Query-String.
(Bitte vorheriges Posting einfach vergessen!)
trotzdem bringt mich dein einwand noch auf eine ergänzung:
evtl. sollte man gleich auf den script-namen mit angeben, also
/scriptname.php?eins=...
verwenden statt
/?eins=...
andernfalls muss man sich darauf verlassen, dass das gewünschte script mit DirectoryIndex als default-script herangezogen wird.
gruss,
wahsaga
Klasse das läuft wunderbar!
Wie kann man es so gestalten das es egal ist ob
http://example.net/1
oder
http://example.net/1/
Irgentwie ^([a-z]*[/|NICHTS])$ ???
RewriteRule ^([a-z]*)/$ /index.sxp?lang=$1&mode=0&js=0
mfg Till
PS: DirectoryIndex index.sxp
Habs selber geschafft *freu*
Falls es noch jemanden intressiert:
RewriteRule ^((en|de|la)*)/((error|download|HTML|confirm|store|form|check)*)/js(/|\s*)$ /index.sxp?lang=$1&mode=$2&js=1
RewriteRule ^((en|de|la)*)/((error|download|HTML|confirm|store|form|check)*)(/|\s*)$ /index.sxp?lang=$1&mode=$2&js=0
RewriteRule ^((en|de|la)*)(/|\s*)$ /index.sxp?lang=$1&mode=0&js=0