Søger du en specifik kategori?

 



Oprettet tir. d. 03. februar 2009 kl. 17:38

morteeart
morteeart (15.113 point)
Guidens karaktér
1
2
3
4
5

mod_rewrite - Omskrivning af urls

I denne artikel bliver der gennemgået apache serverens smarte funktion til omskrivning af urls.
Mod_rewrite - Voodoo til Apache


I denne artikel vil jeg gennemgå apache serverens smarte funktion
til omskrivning af urls.

[1 Hvad er mod_rewrite ?]

Mod_rewrite er et modul til apache serveren som
kan lave www.domæne.dk/produkter.php?id=1 om til www.domæne.dk/produkter/1

Dette er smart, ser smart ud, og fjerne nogle sikkerhedshuller mht. SQL injektion i urls
og lign.

[2 Hvem kan bruge mod_rewrite ?]

Alle kan bruge mod_rewrite, det eneste det kræver er en apache server hvor modulet
er slået til. I næste afsnit bliver der gennemgået server opsætning.

mod_rewrite aktiveres via. en .htaccess fil, med nogle regulære expressions i.

[3 Opsætning af sin server]

(Skip dette afsnit hvis du ikke har egen server)
For at kunne bruge mod_rewrite på sin server kræves der følgende indstillinger i httpd.conf


LoadModule rewrite_module modules/mod_rewrite.so (Fjern evt. # foran, hvis det allerede står der)

AddModule mod_rewrite.c (Fjern evt. # foran, hvis det allerede står der)

AllowOverride skal være sat til "All"

AccessFileName .htaccess (Den er sat korrekt som standart)


HUSK at genstarte serveren efter disse indstillinger er rettet, det er en klassisk fejl at glemme dette.

[4 Brugen af mod_rewrite / .htaccess ]

For at kunne bruge mod_rewrite skal vi bruge en .htaccess fil
Denne kan laves med notepad, men det er MEGET VIGTIGT at navnet er: .htaccess (Altså uden noget før . )
Efter du har lavet din .htaccess fil, så kan du lægge den ind i den mappe du vil arbejde med.

Og lad os så kommer i gang.

Først et eksempel, og så forklaring:


RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-F
RewriteRule ^/produkter/([0-9]+)$ /produkt.php?id=$1


Forklaring:

RewriteEngine

Sættes til "On" , fordi den er som standart "Off", og det virker ikke uden.

RewriteBase

Angiver det base directoty (hovede mappe) som vi vil arbejde med,
i dette tilfælde " / " altså samme mappe som .htaccess ligger i.

RewriteCond

RewriteCond er en slags if-sætning i mod_write's.
Hvis den retunerer true vil den efterfølgende RewriteRule blive udført.

Se dokumtationen for liste over kommandoerne (http://httpd.apache.org/ (...))

RewriteRule

RewriteRule ^/produkter/([0-9]+)$ /produkt.php?id=$1

Det essentielle med .htaccess filen, RewriteRule er den "regel" som angive hvad som skal betrages som hvad.
Dette gøres med en regulær expression.

^/produkter/([0-9]+)$  Bliver altså til /produkter.php?id=$1 hvor $1 er 123 i domæne.dk/produkter/123

Det smarte er at hvis du skriver domæne.dk/produkter/abc vil den ikke reagere overhovedet, og derfor ingen action.

[0-9] angiver at det er tallene 0-9 der må bruges
Hvis du f.eks. laver
RewriteRule ^/brugere/([A-Za-z0-9]+)$ /produkt.php?id=$1
Så må du bruge A-Z (der er forskel på store og små bogstaver), a-z og 0-9 på én gang.


Du kan med f.eks. et php-script vise resultatet af din mod_rewrite:


<?php

if(isset($_GET['id']))
{
  $id = $_GET['id'];
  echo "Du har valgt produkt ID: ".$id;
}
else
{
  echo "Du har ikke valgt et produkt ID";
}

?>


Bemærk at pga. !-F parameteret i RewriteCond , må filen ikke hedder produkter.php.
Men f.eks. produkt.php som jeg har lavet det til.

Du kan også lave flere Rewrite rules, f.eks.:


RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-F
RewriteRule ^/produkter/([0-9]+)$ /produkt.php?id=$1
RewriteRule ^/kategori/([0-9]+)$ /kategorier.php?id=$1
RewriteRule ^/brugere/([A-Za-z0-9]+)$ /produkt.php?id=$1


[5 For dem som vil vide mere]

Hvis i vil vide mere, og have mere uddybende forklaringer vil jeg anbefale
at læse dokumentationen fra Apache, som er på engelsk.

Det er faktisk ret nemt at forstå.

http://httpd.apache.org/ (...)

Changelog

3. Januar 2005 - Lidt slå fejl rettet.
4. Januar 2005 - Endnu flere slå fejl rettet. (jeg er ret god til at glemme dobbelt s )

Mht. artikelens sværhedsgrad så har den jo aldrig været ment til nybegyndere, da regulær expressions jo aldrig har været simple :-)
Men når i skriver "mere uddybende" så skriv gerne hvad i vil have uddybet.

Skrevet søn. d. 02. januar 2005 kl. 15:36| #1

sorenbs (16.802 point)
Meget nyttigt. Lidt rodet forklaring ind imellem, men ellers god og gratis :)

Skrevet man. d. 03. januar 2005 kl. 00:25| #2

lyf (14.107 point)
I afsnit 4 glemmer du det sidste s i .htaccess flere gange ;-) Ku være nogen bliver forvirret af det. Ellers godt med en artikel om det emne, det manglede!

Skrevet man. d. 03. januar 2005 kl. 20:42| #3

madsass (18.166 point)
Lidt flere detajler ville have gjort underværker. Og der er stadig fejl. ".htacces (Altså uden noget før . )"

Skrevet tir. d. 04. januar 2005 kl. 01:21| #4

medions (134.933 point)
www.nordvind.dk
God og flot artikel! - Noget der tit har været spurgt om her på E.

Skrevet tir. d. 04. januar 2005 kl. 14:11| #5

webgon (12.342 point)
Vil sige at den er lige på grænsen til at være 'for' teknisk, men ellers god. En lidt mere uddybende forklaring ville være godt :-)

Skrevet tir. d. 04. januar 2005 kl. 17:33| #6

mccookie (25.987 point)
God artikel ;=)

Skrevet fre. d. 21. januar 2005 kl. 04:32| #7

alister_crowley (13.290 point)
Rigtig god, men der mangler dog info omkring Options -MultiViews
og brug af flere RewriteCond's.

Skriv en kommentar



Mest populære guides

Guidens karakter
!!!Karaktér: 3
14 stemmer
31/01 - 2011
Af: heinzdmx

Dropbox - gratis online lagerplads

Jeg vil i denne guide forklare lidt om hvad Dropbox er og også hvordan du får mest mulig plads på Dropbox. Dropbox er kort sagt en service hvor du har dine data lagt til backup på både nettet og din egen computer.
Guidens karakter
!!!Karaktér: 4
33 stemmer
02/02 - 2009
Af: jkrons

Dato- og tidsberegninger i Excel

En introduktion til simple beregninger med dato og tid i Excel. Opdateret med afsnit om beregning af tillæg.
Excel  |  Læs »
Guidens karakter
!!!Karaktér: 4
21 stemmer
06/11 - 2011
Af: fromsej

Sådan fjerner du virus og malware

Udviklingen går stærkt på "skidt"fronten, så vi har sammensat en ny og effektiv programpakke til fjernelse af det.
Virus  |  Læs »

Log ind

   

   



   




Tips & Tricks fra PC World

Teaser billede

Top 5: Virale YouTube-videoer fra Danmark

Lægger du mærke til de mere eller mindre skjulte reklamebudskaber, når du ser videoer på nettet? Vi har taget et kig på fem utrolige danske videoer, som er blevet virale hit.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan fupper smarte svindlere dig på Facebook

Se hvordan du undgår Facebook-fup i fremtiden.


Nyheder fra Computerworld

Teaser billede

App-udvikling 2.0: Sådan er den perfekte app

ComputerViews: Den værste app-hype er ved at have lagt sig, og nu ser vi konturerne af fremtidens app-design. Men hvordan udnytter man de mobile muligheder optimalt?


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger