Archive for June, 2006

Diverse .htaccess-tips

Hæ!?!? Hva er en .htaccess-fil?

.htaccess (uttales “H.T.-aksess”) er en konfigurasjonsfil for Apache-servere som brukere selv kan legge inn på sitt område. Merk at webhosten kan disable .htaccess-filer eller disable at brukeren kan endre på enkelte konfigurasjoner. .htaccess har ikke noe filnavn før punktummet, kun en filendelse. Filen bør som andre tekstfiler lastes opp på serveren i ASCII-modus. Konfigurasjonen du setter for mappen, gjelder som regel for alle undermappene også. Dette kan overstyres med .htaccess-filer i undermappene.

Jeg får ikke til å lage en fil med filnavnet “.htaccess”

Hvis du bruker Windows Explorer er det ikke bare bare å lagre en fil uten filnavn før punktum. Bruk en annen utforsker (f.eks. Total Commander, eller kanskje det går lokalt i ditt ftp-program?) eller lagre filen som htaccess.txt og rename den på serveren. Hvis du først har fått renamet filen lokalt, kan du fint redigere den i windows. Det er bare når du skal endre eller gi filen navn, windows explorer setter seg på bakbena.

Filen forsvant når jeg lastet den opp på serveren!

Filnavn som starter med et punktum er skjulte filer på serveren. Sjekk manualen til ditt ftp-program for å finne ut hvordan du kan se skjulte filer.

Jeg får bare en 500-feil

Enten har du skrevet noe feil, eller så har du skrevet noe som ikke støttes av serveren.

Finn din path/sti!

I mange konfigurasjoner må du skrive inn stien fra rooten til en mappe/fil. Hvis du ikke allerede vet stien, kan du teste ut med følgende kode i et php-dokument:

< ?php
echo 'Min root er: '.$_SERVER['DOCUMENT_ROOT'];
?>

Kommentarer i htaccess

Du kan ha egne kommentarlinjer. Start linjen med # så vil linjen bli ignorert av serveren. Du kan ikke ha en kommentar på samme linje som en konfigurasjon.

Hindre tilgang til .htaccess-filer

Som regel er serveren satt opp til å hindre tilgang til .htaccess-filer. Men for sikkerhetsskyld, skriv inn denne for å hindre tilgang til alle filer som begynner med “.ht” (bruk gjerne FilesMatch istedet om det støttes på din server).


    Order deny,allow
    Deny from all

Da var vi klar?

Da har du forhåpentligvis fått laget deg en .htaccess-fil, så du kan teste ut! Det er masse flere ting du kan gjøre enn hva jeg har listet opp her. Så når du er ferdig med denne siden her, gå videre på google, eller linkene jeg har listet nederst, og forsk i vei! Tekst skrevet i blå monospace er kode som skal settes inn i .htaccess.

Egne errorsider!

Dette er de mest vanlige feiltypene:

  • 401 Authorization Required – Dette får man i htaccess-passordbeskyttede mapper/filer hvor man ikke har skrevet inn riktig brukernavn og/eller passord.
  • 403 Forbidden – Dette får man om man prøver å gå inn på en fil/mappe som man ikke har rettigheter til å lese/liste. Man ser det ofte når man prøver å gå inn i en mappe uten index-fil, og det er satt opp slik at man ikke kan liste opp filene i mappen.
  • 404 Not Found – Denne feilmeldingen får man om man prøver å gå inn på en fil/mappe som ikke eksisterer. Vanlig ved omstruktureringer av sites og feilskrivinger.

Velg ut hvilke feilmeldinger du vil dekke, og gjør klar feilmeldingssidene og linkene til disse. Du kan bruke lokal adresse, eller full url (401 MÅ ha lokal adresse). Eksempel på lokal adresse: /error404.html. Ligger du på en delt server som f.eks. home.no.net, må du ha med brukernavnet ditt. Eksempel: /cavey/error404.html. Merk at vi ikke bruker document root her. Forskjellen på å bruke lokal adresse og full url er følgende: Hvis du bruker lokal adresse, så vil ikke urlen endre seg i adressefeltet når errorsiden kommer opp. Bruker du full url, vil urlen i adressefeltet endre seg til adressen til error-filen. F.eks. http://cavey.no/error404.html.

Hvis errorsiden er på under 512 bytes vil Microsoft Explorer vise sin egen feilmelding. En god grunn til å være litt kreativ med error-sidene!

#Lokale adresser:
ErrorDocument 401 /errorsider/error401.html
ErrorDocument 403 /errorsider/error403.html
ErrorDocument 404 /errorsider/error404.html

eller…

#Fulle urler (unntatt 401):
ErrorDocument 401 /errorsider/error401.html
ErrorDocument 403 http://cavey.no/errorsider/error403.html
ErrorDocument 404 http://cavey.no/errorsider/error404.html

Hjelp! register_globals er skrudd av!

Mange hoster har register_globals skrudd av. Mange gamle script vil da ikke virke lengre. Det beste er selvsagt å skrive dem om. Men hvis man ikke har tid/ork/forutsetninger til å gjøre det, kan man ta en spansk en og skru den på igjen selv:

#Skru på register_globals:
php_value register_globals 1

#Skru av register_globals:
php_value register_globals 0

Skru av eller på listing av filer i mapper

Hvis noen går inn i en mappe uten indexfil, kan de se alle filene du har i mappen om det er satt opp slik på serveren. Med mindre det er en filliste du ønsker skal være tilgjengelig, bør du skru av muligheten for å liste filer i mapper / directory listing (Brukeren vil da få en 403-feilmelding i stedet):

#slår på directory listing:
Options +Indexes 

#slår av directory listing:
Options -Indexes 

Kjøre html-filer som php uten å rename de

Gidder du ikke rename alle html-filene dine, men du ønsker å bruke php i dem likevel? Legg denne linja inn i htaccess-filen din, og vips så er den gamle kjedelige html-filen en ny og spennende php-fil med uendelig med muligheter!

AddType application/x-httpd-php .php .html

Ha et annet filnavn som index-fil

Hvis du ønsker at en annen fil enn de standard index.* skal åpnes når du skriver inn webadressen din uten filnavn, kan du endre dette med følgende kode, som i dette tilfellet vil åpne start.html istedet for f.eks. index.php:

DirectoryIndex start.html

Inkludere header/footer i phpfiler uten include()

Et kjekt alternativ til å hive inn include() i topp og bunn på alle php-filene dine. Husk at den tar alle php-filene i mappen og undermappene (ikke bare de med .php-extension)! Jeg har ikke testet denne ut noe videre, men det er sikkert mulig å være litt kreativ her. I htaccess-filen legger du altså inn disse to linjene. Husk å finne frem til document root:

#fil1.php vil bli inkludert øverst i php-filene
php_value auto_prepend_file /full/path/til/mappe/fil1.php

#fil2.php vil bli inkludert nederst i php-filene
php_value auto_append_file /full/path/til/mappe/fil2.php

Passordbeskytte en mappe

Her kan du legge inn brukere med hvert sitt passord. De vil da få opp en boks der de skal skrive inn brukernavn og passord. Hvis de skriver inn feil, vil de få opp en 401-feilmelding.

Legg inn de filene som skal passordbeskyttes inn i en mappe

I mappen legger du også en .htaccess-fil med følgende innhold. Pathen som ligger øverst, er til filen der bruker-/passordinformasjonen ligger. Teksten på AuthName er teksten som kommer opp i passordboksen, denne endrer du til det som passer. Jeg har ikke tatt for meg grupper:

AuthUserFile /full/path/til/mappe/.htpasswd
AuthName "tekst som kommer opp på passordboksen"
AuthType Basic

require valid-user

Så lager du en .htpasswd-fil. Her skriver du inn brukernavn og kryptert passord. Dette kan du bruke php-funksjonen crypt() til. Eksempel på innhold her. Første bruker er cavey, og passordet 123:

cavey:xt2XrVg4lTs6s
enannenbruker:CJ6wv6VkTjbe2
endaenannenbruker:Ghej.DYwHGm2M

Fancy directory listinger!

Ønsker du å liste filene i en mappe, men synes at det standardoppsettet er gørr-kjedelig? Dette kan du endre! Du kan ha eget design, eget stilark, html-kode over og under. Egne ikoner, beskrivelse bak etc. Ikonene kan du f.eks. lage i gif i like størrelser. Du kan gjøre mye mer enn dette, så heftig googling på “FancyIndexing” etterpå, anbefales.

Først bøtter vi innpå med hele .htaccessfilen (husk å endre adressene slik at det passer til ditt bruk), så skal jeg forklare etterpå:

IndexIgnore .ht* hemmeligfil.html endaenhemmeligfil.html .inc
IndexOptions FancyIndexing IconHeight=16 IconWidth=16 SuppressHTMLPreamble IconsAreLinks FoldersFirst IgnoreCase DescriptionWidth=50

AddDescription "En kjempemorsom vits!" taxihevn.txt

AddIconByType (IMG,/mappe/til/icons/bilde.gif) image/*
AddDescription "bildefil" .jpg .gif .png

AddIcon (TXT,/mappe/til/icons/tekst.gif) .txt
AddDescription "tekstfil" .txt

AddIcon (WEB,/mappe/til/icons/webfiler.gif) .html .php .css
AddDescription "webdokument" .html .php .css

AddIcon (..,/mappe/til/icons/opp.gif) ..

AddIcon /mappe/til/icons/mappe.gif ^^DIRECTORY^^

AddIcon /mappe/til/icons/blank.gif ^^BLANKICON^^

DefaultIcon /mappe/til/icons/default.gif

Options +Indexes

HeaderName /mappe/til/HEADER.html
ReadmeName /mappe/til/README.html

Forklaringer på de forskjellige tingene:

  • IndexIgnore – Hindrer enkelte filer/filtyper i å vises i directory listingen. Her kan man liste opp flere. Filen kan likevel leses om man vet adressen! Se lengre oppe hvordan hindre tilgang til en fil.
  • IndexOptions
    • FancyIndexing – Her skrur du på fancy directory listing
    • IconHeight og IconWidth – Skriv inn ikonhøyden/bredden (f.eks. 16) som vil bli satt inn i img-taggen som width og height.
    • SuppressHTMLPreamble – Fjerner alle html, header og bodytags fra directory listingen så du kan sette inn dine egne koder uten å få dobbelt opp av dette.
    • IconsAreLinks – Har du dette med, kan du også klikke på ikonene, ikke bare teksten, for å lese filene.
    • FoldersFirst – Med denne vil folderne alltid være øverst uansett hvordan du sorterer filene
    • IgnoreCase – Hvis vi ikke har denne på, vil filer med stor forbokstav komme ovenfor de med små forbokstav.
    • DescriptionWidth – Har man mye å si, kan fort description-teksten bli kortet ned. Her kan du gjøre den litt lengre ved å skrive inn antall tegn du vil tillate.
  • AddDescription – Her kan du legge inn beskrivelse på filer, filtyper etc. Ønsker du at en skal overskrive en annen (f.eks. en beskrivelse på en spesifikk fil), legg den over de andre.
  • AddIconByType – Her kan du f.eks. bestemme hva slags ikon du skal ha på bildefiler (image/*). Denne er å foretrekke fremfor kun AddIcon. Her kan du også legge inn alt-tekst ved å hive adressen inn i en parantes, og skrive alt-teksten først med komma før adressen.
  • AddIcon – Her kan du skrive inn filendelsene du vil skal ha et ikon. Samme greiene her med alt-tekst. Spesielle ting man kan legge til ikon på er:
    • .. – opp et nivå
    • ^^DIRECTORY^^ – mapper
    • ^^BLANKICON^^ – bare et blankt ikon. Brukes som en “spacer”.
  • DefaultIcon – Her legger du til ikon for alle filene som ikke du har satt ikon på.
  • Options +Indexes – som nevnt tidligere; her tillater du listing av mappen
  • HeaderName /enellerannenmappe/HEADER.html – her legger du til all html-kode som skal være over listingen. En fin måte å integrere listesidene med resten av websiten med samme design.
  • ReadmeName /enellerannenmappe/README.html – her er html-koden som skal under listingen.

Ressurslinker

Splash-sider – Hva er vitsen?

Tenk deg at du kjører langs en vei. Plutselig må du stoppe i et lyskryss. Problemet er at det ikke er noe kryssende trafikk, ikke noe veiarbeide el.l. heller. Likevel må du stoppe. Du ser et fancy skilt hvor det står “Du har nå kommet til Bergen kommune”. Du får grønt lys, og du kan kjøre videre…

(more…)