webForumDet fria alternativet

mod rewrite problem

Webbutveckling

12 svar · 766 visningar · startad av Kosse

Medlem sedan juni 2000162 inlägg
Frågan#1

Min starka sida är inte reqexp, jag behöver hjälp.

Provade först detta, vilket funkat bra. Jag får domän.com/användarnamn

RewriteEngine on
RewriteRule ^([A-Za-z0-9\_][A-Za-z0-9\_\-]+)$ index.php?user=$1 [QSA]

Nu vill jag få till detta också, domän.com/användarnamn/15

RewriteEngine on
RewriteRule ^([A-Za-z0-9\_][A-Za-z0-9\_\-]+)/([A-Za-z0-9\_][A-Za-z0-9\_\-]+)$ index.php?user=$1/&nr=$2 [QSA]

Den andra rewriterulen fungerade ju bra om man bortser ifrån att domän.com/användarnamn slutade fungera då. Hur får man båda varianterna att fungera samtidigt?

Medlem sedan juni 20084 inlägg
#2

RewriteRule ^([A-Za-z0-9]+)(/([A-Za-z0-9]+))? index.php?user=$1&nr=$3 [NC,L]

Detta ska fungera.

Medlem sedan juni 2000162 inlägg
#3

Hmm, nånting är nog inte helt rätt. Nu verkar det som att $1 innehåller "index" vilket ju inte är rätt. Är det jag som missar något eller vad kan vara fel?

Medlem sedan juli 20013 378 inlägg
#4

Hmm...

Testa

RewriteEngine On
RewriteRule ^([A-Za-z0-9\_][A-Za-z0-9\_\-]+)/([A-Za-z0-9\_][A-Za-z0-9\_\-]+)$ index.php?user=$1&nr=$2 [QSA]
RewriteRule ^([A-Za-z0-9\_][A-Za-z0-9\_\-]+)(/)?$ index.php?user=$1 [QSA]
Medlem sedan juni 2000162 inlägg
#5

Det fungerar nu att skriva www.domän.com/användare/15 , men bara www.domän.com/användare fungerar inte. Båda måste fungera samtidigt. Krångligt värre detta.

Medlem sedan juni 20014 421 inlägg
#6

Nån variant på den här vore lämpligare:
RewriteEngine On
RewriteRule ^([^/]+)$ index.php?user=$1 [NC,L]
RewriteRule ^([^/]+)/([^/]+)$ index.php?user=$1&nr=$2 [NC,L]

Tror jag...utan att ha kollat så noga.

Medlem sedan juni 2000162 inlägg
#7

Nej tyvärr. Resultatet blev att user innehöll "index.php"

Medlem sedan juli 20013 378 inlägg
#8

OK.

Då har du troligen regler i din .htaccess som kan påverka utfallet som du inte har pratat om här, för koden som jag gav dig inatt - dvs

RewriteEngine On
RewriteRule ^([A-Za-z0-9\_][A-Za-z0-9\_\-]+)/([A-Za-z0-9\_][A-Za-z0-9\_\-]+)$ index.php?user=$1&nr=$2 [QSA]
RewriteRule ^([A-Za-z0-9\_][A-Za-z0-9\_\-]+)(/)?$ index.php?user=$1 [QSA]

funkar när den är inlagd i en .htaccess där det inte finns fler rewriterules - detta är verifierat både lokalt i min XAMPP-baserade testmiljö, och hos Binero ;)

- så om du vill ha mer hjälp får du nog ge oss fler detaljer om t.ex. vad du egentligen har i din .htaccess, vilken version av Apache du kör osv.

fotnot:
Din ursprungsregel (i första inlägget) utesluter ÅÄÖ m.fl tecken ur det som får förekomma i "user", så ordet "användare" funkar inte - därav att jag ändrat länkarna till "anvandare" ;)

Medlem sedan juni 2000162 inlägg
#9

jarvklo, du är ett geni! :e Haha, vad konstigt. Nu funkade allting klockrent. Måste gjort nått slarvfel när jag testat. Vad gäller ÅÄÖ så hade jag med det bara som exempel. ;)

Medlem sedan juni 2000162 inlägg
#10

En sak till som slog mig som hade varit bra, jag promotar min site utan www innan själva domänet, hur gör man då för att ta bort www när man requestar med www?

Medlem sedan juli 20013 378 inlägg
#11

Inga problem.

Såhär brukar jag göra:

RewriteCond %{HTTP_HOST} ^www\.example\.se$ [NC]
RewriteRule ^(.*)$ http://example\.se/$1 [R=301,L]
Medlem sedan juni 2000162 inlägg
#12

Ok, detta får jag prova så fort jag kommer hem. Antar att det inte är några problem att kombinera med de andra omskrivningsreglerna då? Hör av mig igen om det strular. Tack!

Medlem sedan juli 20013 378 inlägg
#13

Kosse skrev:

Ok, detta får jag prova så fort jag kommer hem. Antar att det inte är några problem att kombinera med de andra omskrivningsreglerna då? Hör av mig igen om det strular. Tack!

Nejdå.
Inga problem, det är helt enkelt tre separata regler, varav en har ett villkor också - men jag brukar lägga "domänregeln" överst av gammal ohejdad vana eftersom reglerna "körs" i ordning och jag fått för mig att jag vill kunna "dirigera om" mellan olika domänalternativ innan andra regler körs :)

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.example\.se$ [NC]
RewriteRule ^(.*)$ http://example\.se/$1 [R=301,L]

RewriteRule ^([A-Za-z0-9\_][A-Za-z0-9\_\-]+)/([A-Za-z0-9\_][A-Za-z0-9\_\-]+)$ index.php?user=$1&nr=$2 [QSA]

RewriteRule ^([A-Za-z0-9\_][A-Za-z0-9\_\-]+)(/)?$ index.php?user=$1 [QSA]
260 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)