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/([^/]+)|)(/([^/]+)/([^/]+)|)(/|)$

Alex 2006-12-27 14:50

Underbart!

Tack WizKid!

Alex 2006-12-27 22:33

WizKid hjälpte mig på msn och han arbetade fram följande regel.
RewriteRule ^([^/\.]+)(/view/([^/]+))?(/([^/]+)/([^/]+))?/?$ /view.php?clanadr=$1&pageid=$3&$5=$6 [L]

Vad som inte ville vara med var | efter som att den är operatorn för OR, och då andra värdet var tomt kunde inte apache godkänna regeln.

boena 2006-12-29 22:59

Någon som kan rekommendera en bra guide att läsa om man vill lära sig mer om mod rewrite? Vill använda mig av detta till ett nytt projekt och skulle behöva lite kött på benen...

Seattlegrunge 2006-12-29 23:08

Bra sidor att ha till hands:

Bra info
Bra för t ex dubbelkoll
Bra sida om man vill ha kläm på regexp

Dessa kan även vara bra:
http://www.sitepoint.com/article/guide-url-rewriting
http://www.sitepoint.com/article/search-en...e-friendly-urls
http://www.zend.com/zend/spotlight/searchengine.php

boena 2006-12-30 00:47

Man tackar, där har man lite att läsa igenom :)


Alla tider är GMT +2. Klockan är nu 09:41.

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