Apache .htaccess konfigureringsfil

Med .htaccess filer kan man indstille Apache HTTP serveren per-mappe

Introduktion

.htaccess er filer som bruges til at konfigurer Apache HTTP serveren til at ændre den måde filerne i mappen og undermapperne tilgås af browseren.

.HTaccess er en forkortelse for Hyper Text access.

Grunden til at filen starter med punktum (.) er fordi i Unix systemer er filer som starter med punktum skjulte.

Httpd.conf

For at Apache skal tillade ændringer fra .htaccess filer så skal AllowOverride None ændres til AllowOverride All i Apache konfigurationsfil som her.

Apache konfigurationsfil hedder httpd.conf og findes for eksempel i :
C:\Program Files\Apache Software Foundation\Apache2.X\conf\httpd.conf

Genstart Apache for at få ændringen til at træde i kraft.

.htaccess

Her ses et eksempel på en .htaccess fil som kan ligge i roden af hjemmesiden.
Alle linjer som starter med # er kommentar.

DirectoryIndex

DirectoryIndex fortæller hvilken fil som skal være startsiden i den mappe som .htaccess filen ligger i.

Lad os sige vi gemmer følgende tekst i en .htaccess fil i roden af hjemmesiden.

Når man besøger http://localhost/ vil siden http://localhost/mappe/forsiden.php blive vist men der vil fortsat stå http://localhost/ i browserens adressefelt.

Redirect

Hvis man ændre domænenavn/webhotel så kan man skrive følgende i .htaccess filen og lægge filen i roden på det gamle webhotel.

Så vil de brugere der besøger links til det gamle domæne automatisk blive viderestillet til det nye domæne (i dette tilfælde netkoder.dk).
Desuden får søgemaskiner at vide at alle de gamle adresser skal ændres til det nye domæne så man får en glat overgang.

Statuskoden 301 betyder flyttet permanent (Moved Permanently).

RedirectPermanent

Hvis du ændre navnet på en fil kan du med RedirectPermanent viderestille til det nye filnavn.

På den måde virker gamle links fortsat.

Lad os sige du skal ændre filendelsen fra .html til .php fordi dit nye webhotel kun tillader PHP kode udførsel i filer som ender på .php så gør sådan her for hver fil.

RedirectMatch

Hvis du vil ændre navnet på en mappe og samtidig viderestille gamle links til den nye mappe kan du skrive følgende.

Så vil links der peger på filer i den gamle mappe (http://netkoder.dk/html/) automatisk blive viderestillet til den nye mappe (http://netkoder.dk/netkoder/).


For at det skal kunne virke skal Rewrite modulet være indlæst i Apache.
Det gøres ved at fjerne kommentar tegnet (#) først i følgende linje i Apache konfigurationsfilen (httpd.conf).

Genstart Apache for at få ændringen til at træde i kraft.

ErrorDocument

Med ErrorDocument kan man viderestille til sin egen fejlside for eksempel når en fil ikke blev fundet.

Statuskoden 404 betyder ikke fundet (Not Found).
Statuskoden 403 betyder adgang nægtet (Forbidden).

På siden http://netkoder.dk/netkoder/fejl.php kan man så lave sin egen fejlbesked.

Indexes

Hvis man skriver følgende i .htaccess filen kan man slå mappevisning til.

Når man så besøger en mappe i browseren som http://localhost/netkoder/billeder/ så kan man få vist en liste med mapper og filer.
index of ... screenshot
Det er bare svært at se hvad der er filer og hvad der er mapper og der er ingen information om filstørrelse.

Ved at tilføje følgende i .htaccess kan man selv bestemmer ikoner for hver filendelse/MIME-type og beskrivelse af filtyper og at mapper skal vises øverst.

Så kan det komme til at se sådan her ud.
index of ... screenshot
Når man skriver + foran noget så betyder det at indstillingen slås til (Options +Indexes). Skriver man - foran slås den fra (Options -Indexes).

Ønsker man ikke at det skal være muligt at vise alle mapper og filer ved at besøge adressen til mappen så kan man skrive følgende.

Så får man en fejl 403 (Adgang nægtet) hvis man forsøger at vise mappens indhold.

På mit webhotel er mappevisning slået fra som standard og det er ikke muligt at slå til.
Hvis man forsøger at slå mappevisning til på mit webhotel så får man en fejl 500 (Internal server error).

Adgang forbudt

Hvis man har en mappe som man ikke ønsker at vise indholdet af så kan man spærre for adgangen til mappe ved at lave en .htaccess fil i mappen med følgende kode.

Hvis en bruger prøver at tilgå en fil i mappen så får brugeren en 403 (access denined) fejlbesked.

Man kan så bruge PHP til at få adgang til filerne.

AddType og MIME type

Når HTTP serveren (Apache) sender en fil til browseren så sendes der en header før filen med information som filens MIME type så browseren ved hvad slags data den kan forvente der er i filen.

For eksempel bruges MIME typen text/html til HTML filer og audio/mpeg til MP3 filer.

Det fungere for det meste, men hvis serveren ikke sender nogen MIME type information i headeren så kan det betyde at browseren ikke kan vise filen.

For at se hvilken MIME type en fil sendes med kan man bruge en HTTP header checker.

I .htaccess filen kan man med AddType tilføje MIME typer til bestemte filendelser som her til lyd og videofiler.

Punktum (.) før filendelserne er valgfrit og filendelsen skelner ikke mellem store og små bogstaver.

.htaccess filen ligger man så i roden af hjemmesiden hvis man ønsker det skal gælde for alle filer i alle mapper eller man kan også lægge den i mappen hvor man har mediefilerne så gælder den kun i den og underliggende mapper.

Tilføj MIME type i mime.types filen

Alternativt kan du også tilføje MIME typer i mime.types filen som findes i conf mappen hvor Apache er installeret.

Som her hvor jeg fortæller Apache at filer som ender med .webm skal sendes med MIME typen video/webm som ikke var med en tidligere version af Apache fordi filtypen var ret ny. Filtypen er efterfølgende blevet tilføjet.

Genstart Apache for at få ændringen til at træde i kraft.

Skriv din kommentar

Spørg mig om hvad som helst
Du kan også skrive direkte til mig på
Stem
Søg
Language

Select English to navigate the website in English. Things like the navigation menu and contact form will be in English, but the main content on each page will not be translated.