webForumDet fria alternativet

Lyckas fånga del av URL med htaccess

Webbservrar

5 svar · 663 visningar · startad av greyhound

Medlem sedan maj 20031 472 inlägg
Frågan#1

Tjena!

Jag skulle vilja få ut delen mellan andra och tredje "/". Det är säkert lätt att lösa men jag lyckas inte :) Det kan vara mera text efter sista "/" också.

/search/renttype-all.place-all.type-all.bedrooms-all.0.0/

Har testat följande regler men det funkar inte.

RewriteRule ^search/(.+)/$ index.php?Search=0&Arg=$1 [NC]
RewriteRule ^search/(.+)/(.+)$ index.php?Search=0&Arg=$1 [NC]
Medlem sedan aug. 20039 340 inlägg
#2

$ matchar ju slutet av strängen. Har du med både ^ och $ måste uttrycket alltså matcha hela strängen (alt. misslyckas). . (punkt) matchar ju valfritt tecken, så i förekommande fall kan den även matcha /. Jag föreslår följande som utgångspunkt:

RewriteRule ^search/([^/]+)/ index.php?Search=0&Arg=$1 [NC]

[^/] matchar valfritt tecken som inte är /. [^/]+ uppenbart då 1 eller flera sådana tecken, följt av /. Notera dock att det inte finns något $ så efter / kan vad som helst följa, och detta kastas bort. Det ligger utanför uttryckets matchningsområde i detta fall.
Man skulle även kunna förfina det till [a-zA-Z0-9\-.] om man vet att strängen bara innehäller bokstäver, nuffror, - samt ..

Medlem sedan maj 20031 472 inlägg
#3

nitro2k01 skrev:

$ matchar ju slutet av strängen. Har du med både ^ och $ måste uttrycket alltså matcha hela strängen (alt. misslyckas). . (punkt) matchar ju valfritt tecken, så i förekommande fall kan den även matcha /. Jag föreslår följande som utgångspunkt:

RewriteRule ^search/([^/]+)/ index.php?Search=0&Arg=$1 [NC]

[^/] matchar valfritt tecken som inte är /. [^/]+ uppenbart då 1 eller flera sådana tecken, följt av /. Notera dock att det inte finns något $ så efter / kan vad som helst följa, och detta kastas bort. Det ligger utanför uttryckets matchningsområde i detta fall.
Man skulle även kunna förfina det till [a-zA-Z0-9\-.] om man vet att strängen bara innehäller bokstäver, nuffror, - samt ..

Tack för ett bra svar! Dock lyckas jag inte med något :)
Jag testade med båda men ingen funkade

RewriteRule ^search/([^/]+)/ index.php?Search=0&Arg=$1 [NC]
RewriteRule ^search/([a-zA-Z0-9\-.]+)/ index.php?Search=0&Arg=$1 [NC]
Medlem sedan aug. 20039 340 inlägg
#4

Det funkar inte alls alltså? Kan det vara så enkelt att du har glömt att sätta på omskrivningsmotorn?

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^search/([^/]+)/ index.php?Search=0&Arg=$1 [NC]

Rad 1 gör just detta och måste köras innan några RewriteRule's kan komma på tal. Rad 2 anger vilken bas du utgår från. Rad 3 och 4, gör att sökvägar som motsvarar filer respektive mappar inte skrivs om. (Kan tas bort i detta fall) Och sist kommer som sagt uttrycket.

Medlem sedan maj 20031 472 inlägg
#5

nitro2k01 skrev:

Det funkar inte alls alltså? Kan det vara så enkelt att du har glömt att sätta på omskrivningsmotorn?

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^search/([^/]+)/ index.php?Search=0&Arg=$1 [NC]

Rad 1 gör just detta och måste köras innan några RewriteRule's kan komma på tal. Rad 2 anger vilken bas du utgår från. Rad 3 och 4, gör att sökvägar som motsvarar filer respektive mappar inte skrivs om. (Kan tas bort i detta fall) Och sist kommer som sagt uttrycket.

Nej det är inte det, jag har andra regler som funkar. Även om jag tar bort alla andra regler så funkar det inte.

Medlem sedan maj 20031 472 inlägg
#6

Hittade felet! Eftersom jag hade en fil med namnet search.php så skippade den min regel. Jag får helt enkelt byta namn på den bara.

Tack för hjälpen nitro2k01!

475 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
339 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
340 ms — ändringar (db)