RewriteRule med to variabler

Tags:    rewriterule urlrewrite php

Hej.

Jeg er igang med at lave en hjemmeside til mit fodboldhold, og er løbet ind i et problem mht. en rewriterule.

Jeg har lavet det sådan at en spiller kan vælges enten ud fra spillerens navn eller spillerens nummer - hvilket giver en url som dette:
showplayer.php?number=10
eller
showplayer.php?name=jens_jensen

Jeg vil nu gerne lave lækre url på hjemmesiden og forsøger at få det til at være enten
spiller/10
eller
spiller/jens_jensen

til dette har jeg lavet følgende rewriterule:

RewriteRule ^spiller/(.*)$ showplayer.php?number=$1
RewriteRule ^spiller/([a-zA-Z0-9_-]+)$ showplayer.php?name=$1

Problemet er bare at den ikke kan finde ud af det hvis jeg gør ovenstående, da jeg jo her sætter to rewriterules istedet for kun en - og det må gøre browseren forvirret?

Begge af ovenstående fungerer fint hvis jeg bruger dem hver for sig - men mit spørgsmål er altså:
Hvordan får jeg lavet en rewriteurl der både godtager number=$1 og name=$1?

Tak for hjælpen



Indlæg senest redigeret d. 18.10.2012 07:25 af Bruger #14602
5 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Byt rundt på dem. Du skal checke med den mest restriktive regel først. Et wildcard match vil naturligvis altid giv et et resultat.

RewriteRule ^spiller/([a-zA-Z0-9_-]+)$ showplayer.php?name=$1 [L]
RewriteRule ^spiller/(.*)$ showplayer.php?number=$1 [L]



Indlæg senest redigeret d. 18.10.2012 09:40 af Bruger #10216
Mange tak for hjælpen!

Jeg har lige et ekstra spørgsmål.

Da jeg samtidig bygger et statistik-modul, vil jeg gerne kunne lade brugerne vælge mellem følgende to muligheder.
Seneste kamp & alle kampe

Jeg har lavet kode der ved tryk på link opdaterer URL'en til
&match=latest eller &match=all

Dette vil jeg også gerne have med i min rewrite.

Jeg har prøvet med:
RewriteRule ^spiller/(.*)/([a-zA-Z0-9_-]+)$ showplayer.php?number=$1&match=$2

Men når jeg laver det sådan fanger den ikke variablen i koden.
Den fanger ganske fint hvis jeg laver den således:
showplayer.php?number=10&match=latest

Er der en løsning til dette?



Sætter du den ved markering?

RewriteRule ^spiller/([a-zA-Z0-9_-]+)$ showplayer.php?name=$1 [L]
-> RewriteRule ^spiller/(.*)/([a-zA-Z0-9_-]+)$ showplayer.php?number=$1&match=$2 [L]
RewriteRule ^spiller/(.*)$ showplayer.php?number=$1 [L]



Indlæg senest redigeret d. 18.10.2012 10:55 af Bruger #10216
Den forstår jeg ikke.

Ved markering - betyder det -> foran?

og i dette tilfælde, skal -> RewriteRule places over eller under den gældende rule?



Glemt et ord.. mente: sætter du din regel ind hvor jeg har markeret?



t