12 Jan

htaccess redirect

Bruger du Apache webserver? Spørg din udbyder hvis du er i tvivl.

Du kan benytte Apache’s htaccess fil til at redirecte fra én side til en anden, og det vil jeg gennemgå i denne artikel. Hvis du ikke ved hvorfor du skulle lave den slags numre, så læs artikelen om webserver svarkoder og se om du har brug for det.

En .htaccess fil giver mulighed for at lave website opsætning pr. mappe pr. domæne. Når du placerer en .htaccess fil i en given mappe, så vil de Apache webserver direktiver den indeholder virke i den pågældende mappe og undermapper.

Den “magt” en htaccess fil har afhænger af rettigheden (eller tilliden) webhosten tillader dig som bruger at definere. Det vil sige, at det er til enhver tid udbyderen der har det endelige ord når indholdet i dine htaccess filer skal vægtes. Nu er det ikke en artikel om Apache webserver opsætning, men blot om indholdet af en htaccess fil. Hvis du har lavet din htaccess fil korrekt, men det stadigvæk ikke virker på dit website, så kontakt din webhotel udbyder og find ud af hvilke direktiver Apache er sat til at acceptere i din htaccess fil.

Der kan laves mange finurligheder i en htaccess fil, men jeg tager kun 1 af dem her - htaccess redirect.

Htaccess redirect

Der er flere scenarier. Der er den simple med en gammel fil der ikke eksisterer mere, men en anden og nyere URL skal overtage den gamle. Så er der den mere avancerede udgave, hvor f.eks. alle URLer med /xxx/ skal erstattes med /yyy/.

Den simple htaccess redirect

Jeg vil f.eks. omdirigere siden
http://www.example.com/bestik/mette/gaffel.html
til
http://www.example.com/bestik/mette-2009/gaffel.html

Følgende skrives i .htaccess filen på webserveren:

Redirect 301 /bestik/mette/gaffel.html http://www.example.com/bestik/mette-2009/gaffel.html

Syntaksen er følgende:

Redirect [status] gammel ny

Gammel adresse skrives uden protokol (http://) og domænenavn. Ny skrives fuldt ud med protokol og domænenavn.

Status kan undlades, men så er det underforstået en “midlertidig redirect 302″, hvor det måske er ønsket at det skal være en permanent 301.

Den avancerede htaccess redirect

I ovenstående tilfælde kunne det udmærket tænkes, at det ikke kun er gaflerne der skal flyttes til en ny adresse, men også knive, skeer osv. Derfor kan dem der har et bestemt mønster flyttes på én gang. Dette skal du naturligvis gøre med omtanke, da du nemt kan overse nogle websider og flytte dem over til en ny placering, der muligvis ikke eksisterer. Og det vil kun irritere dine besøgende.

RedirectMatch er htaccess direktivet du skal benytte til den slags redirects.

Syntaksen er følgende:

RedirectMatch [status] regex URL

Status kan igen udelades og er så underforstået 302.

regex er det regulære udtryk.

URL er den fuldstændige adresse på den nye webside, uanset om den ligger på samme domæne som.

Eksempel:/bestik/mette/gaffel.html

RedirectMatch /bestik/mette/(.*)\.html$ http://www.example.com/bestik/mette-2009/$1.html

Ovenstående eksempel ændrer stien fra /bestik/mette/ til /bestik/mette-2009/ for alle .html filer.

I forhold til den simple redirect, så giver de regulære udtryk mulighed for at udtrykke flere filer på én og samme linje i htaccess filen. Udtrykket i eksemplet (.*) betyder alle tegn. Betingelsen er, at URLen skal starte med /bestik/mette/ og ende på .html. Dette er så “udtryk 1″, og resultatet af dette udtryk gemmes (ordet “gaffel” og lignende gemmes) og benyttes igen i URL i syntaksen, dvs. det bliver sat ind i “http://www.example.com/bestik/mette-2009/$1.html” strengen på $1’s plads. Der kan bruges mere end 1 regulært udtryk.

Læs mere om regulære udtryk for at udnytte htaccess redirect til det fulde.

Håber denne post kan hjælpe lidt på vej med brug af redirects.

God fornøjelse!

Læg et svar

Du skal være logget på for at skrive en kommentar.