WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Mod_rewrite (https://www.wn.se/forum/showthread.php?t=18316)

Alex 2006-12-27 01:01

Hejsan alla...

Skulle vilja ha hjälp med lite mod_rewrite

Så här ser det ut nu
RewriteRule ^([^/\.]+)/?$ view.php?adr=$1

och

RewriteRule ^([^/\.]+)/view/([^/\.]+)/?$ view.php?adr=$1&pageid=$2

Vad jag vill är att ha in två extra argument, som skall funka på båda, eller om man fogar samman de båda Rulesen på något fräckt sätt. De skall funka på följande sätt:

mirkk/view/2((.*)/(.*)) -> view.php?adr=$1&pageid=$2&$3=$4

Och det skall som sagt funka på båda...

Vet inte hur jag skall förklara riktigt. Hoppas att någon förstår vad jag menar.

Alex 2006-12-27 01:19

Skall försöka ta det, igen fast bättre

Detta är inga regler, bara så jag vill ha det..

$1[/view/$2][/$3/$4]

$1 kommer alltid att falla in.
[/view/$2] kommer att falla in någon gång, men behöver inte göra det.
[/$3/$4] kommer att falla in någon gång, men behöver inte göra det. Den påverkas inte heller av [/view/$2].

frågesträngarna kan få vara tomma om de behöver vara det.

?adr=$1&pageid=$2&$3=$4
Skulle kunna bli
?adr=mirkk&pageid=&=
eller
?adr=mirkk&pageid=2&=
eller till och med
?adr=mirkk&pageid=2&hej=tjabba

Alex 2006-12-27 03:47

Nu har jag hållt på med detta mönstret allt för länge ^^

WizKid 2006-12-27 10:41

Tänkte jag skulle testa att göra något. Har tyvärr inte apache installerat på burken jag sitter på så jag kan inte testa ifall det fungerar men om det inte fungerar så kanske det kan ge dig några nya tankar. Nu tog jag förgivet att alla variabler kan innehålla vad som helst förrutom /.

RewriteRule ^/([^/]+)(|/view/([^/]+))(|/(^/)/(^/))$ /?adr=$1&pageid=$3&$5=$6

Alex 2006-12-27 14:02

Det var bra nära tycker jag..

^/([^/]+)(|/view/([^/]+))(|/(^/)/(^/))$

Sätter inte alla...

Testade med, http://regexlib.com/RETester.aspx och av denna listan

/lalala/view/12/hej/hej/
/lalala/view/12/hej/hej
/lalala/view/12
/lalala/view/12/
/lalala
/alala/
/alala/hej/hej/

så matchades endast
/lalala/view/12
och
/lalala

Alltså de utan slash i slutet. Det är ju visserligen inget jättesvårt att ändra.

Men
/lalala/view/12/hej/hej/
/lalala/view/12/hej/hej
och
/lalala/hej/hej/
/lalala/hej/hej

Ville inte heller träffa matchen.

Skall ta och försöka själv igen i någon timma om en stund. Vädrar dock tankarna här så om någon är på att hitta en lösning så säger inte jag nej.

WizKid 2006-12-27 14:09

Var några slarvfel så testa:
^/([^/]+)(|/view/([^/]+))(|/([^/]+)/([^/]+))(|/)$

Alex 2006-12-27 14:12

Nu vill den inte matcha nått ^^
Måste ändå tacka för din hjälp :)!

WizKid 2006-12-27 14:17

Om man på den sidan du testar testa en url åt gången så fungerar det. Och se till att du inte får med mellanslaget i slutet.

Alex 2006-12-27 14:24

Ja, det har du rätt i...
/lalala/view/2/hej/hej
matchar på rätt sätt.
Dock så blir endast
/lalla/view/2
fel.

Den hoppar över att $3 skall innehålla "2" och istället så läggs det värdet på $6

WizKid 2006-12-27 14:42

Detta verkar fungera:
^/([^/]+)(/view/([^/]+)|)(/([^/]+)/([^/]+)|)(/|)$


Alla tider är GMT +2. Klockan är nu 13:49.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson