webForumDet fria alternativet

Behöver hjälp med Rewrite i .htaccess

PHP

4 svar · 1 082 visningar · startad av bigsky

Medlem sedan maj 2002821 inlägg
Frågan#1

Sitter med min .htaccess på Apache på Loopia's webbhotell och behöver hjälp med rewrite.

Vad jag vill åstadkomma

a. Om man besöker nyheter.php?id=1 ska man komma till nyheter/1.

Frågor

1. Hur ska rewrite i .htaccess se ut för att åstadkomma punkt a ovan?
2. Om jag besöker nyheter.php?id=1 visas artikeln helt korrekt eftersom jag kan plocka ut id:et med hjälp av $_GET[id]. MEN om jag besöker nyheter/1, hur får jag då tag på id:et till min databasfråga? Det går väl inte med $_GET[id]. Skriv ett exempel på hur databasfrågan skulle se ut.

Tack på förhand!

Medlem sedan jan. 2005953 inlägg
#2

Är du helt säker på att det är det du vill åstadkomma? Det brukar vara precis motsatt effekt man är ute efter, dvs om besökaren anger adressen http://www.domän.se/nyheter/1 så körs http://www.domän.se/nyheter.php?id=1.

Om det trots allt är som du skriver, är det index.php som ska ta hand om samtliga anrop?

Medlem sedan maj 2002821 inlägg
#3

Självklart har du rätt. Det ska vara tvärtom som du skriver. Besöker man nyheter/1 är det ju nyheter.php?id=1 som ska köras även om besökaren bara ska se nyheter/1.

Medlem sedan jan. 2005953 inlägg
#4

Då borde nånting liknande detta fungera

RewriteEngine On
RewriteRule ^nyheter/([^/]+)/? nyheter.php?id=$1 [L]
Medlem sedan feb. 2010445 inlägg
#5

jag kör en sådan rewrite på min sida, men min rewrite funderar på hela min sida, gjort en liten simpel MVC.

Men jag har i ditt läge skrivit en rewrite som liknar detta

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ nyheter.php?id=$1 [QSA,L]

du kan även ta bort RewriteBase om du vill, den är bra i fall du har flera htaccess filer på din server. men som det är skriven nu så ska det ligga helst i rooten, annars kan det medföra trevliga fel. men skulle den ligga i en undermapp eller liknande så skriver du hela mapp strukturen där på RewriteBase på en rad med bara ett / som skiljetecken mellan mapparna.

hoppas detta hjälper dig :)

250 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)