Her får du hjelp til å lage hjemmeside med video. Alle verktøy og programmer vi bruker til å lage webside er gratis.
Hvordan bruke mod rewrite i .htaccess
Jeg vil lære å omskrive noen URLer med Apaches Mod Rewrite ved hjelp av .htaccess.
Når jeg går inn på domenet mitt, f.eks. domene.com så får jeg opp "index.php" som er hoveddokumentet. Hvis jeg går inn på domene.com/index.php så kommer også forsiden opp.
Det jeg ønsker å gjøre er at de som går til domene.com/index.php blir videresendt til domene.com. Hvordan gjør jeg dette ved hjelp av mod rewrite?
For å gjøre dette bruker man såkalt 301 redirect. Hva er 301 redirect? Et 301 redirect (Permanently Moved) betyr at dokumentet er flyttet permanent. Det man forteller ved å bruke denne omdirigeringen er at dokumentet man dirigerer fra er flyttet til dokumentet man dirigerer til.
Omdirigering av index til rotkatalog
- domene.com (dokument #1)
- domene.com/index.php (dokument #2)
Hadde man brukt HTML, kunne selvsagt filetternavnet vært htm eller html. Det samme gjelder for ASP, CGI og så videre. I eksemplet nedenfor må du derfor endre omskrivingen av URLene til å passe den strukturen du bruker. I eksemplet bruker vi "ext", forkortelse av extension for filetternavn.
En av grunnene til at vi ønsker å omdirigere index.php til roten, er av hensyn til søkemotoroptimalisering. Hvis samme side serveres fra to forskjellige URLer, så vil man miste link juice og autoritet på begge to.
Omdirigering av www til ikke-www og ikke-www til www
Velg om du skal bruke www eller ikke-www først. Altså om websiden din skal være på www.domene.com eller bare domene.com uten www.
Etter valget er tatt må man skrive en omdirigering av www til ikke-www, dvs. fra domene.com til www.domene.com eller motsatt: Fra www.domene.com til domene.com, bør også gjøres med en 301 redirect.
I eksemplet nedenfor er både omdirigering fra ikke-www til www og fra www til ikke-www tatt med, men kommentert ut ved hjelp av #. Fjern nummertegnet foran den løsningen du velger, og fjern den du ikke skal bruke.
Rewrite i .htaccess
Bytt ut tld med ditt top level domain, f.eks. com, net, org, no el.l. Bytt også ut ext med php, htm, html eller hva du enn måtte bruke. Følg kommenteringen for å være sikker på at alt blir riktig, og ta gjerne en backup av din eksisterende .htaccess-fil før du legger inn dette.
# Sjekker om mod rewrite er installert paa webserveren
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
# Skriver om fra domene.tld til www.domene.tld
# RewriteCond %{HTTP_HOST} ^domene\.tld$ [NC]
# RewriteRule ^(.*)$ http://www.domene.tld/$1 [L,R=301]
# Skriver om fra www.domene.tld til domene.tld
# RewriteCond %{HTTP_HOST} ^www\.domene\.tld$ [NC]
# RewriteRule ^(.*)$ http://domene.tld/$1 [L,R=301]
# Skriver om fra index.ext (ext kan være php, html ...)
# til uten index.ext, HUSK aa fjerne www hvis du ikke bruker www
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.ext\ HTTP/
RewriteRule ^index\.ext$ http://www.domene.tld/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>Fjern det der og erstatt det med mitt skribleri ovenfor, fjern kommentering (#) foran det valget du går for (www eller ikke-www) og følg anvisningene i kommentarene.
Hvis du har gjort det riktig og velger www.domene.com, så skal alle disse adressene sendes til den:
- domene.com
- domene.com/index.php
- www.domene.com/index.php
Det skjer ikke nå, ergo har du ikke gjort det korrekt.
Virker dette:
# Sjekker om mod rewrite er installert paa webserveren
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
# Skriver om fra domene.tld til www.domene.tld
RewriteCond %{HTTP_HOST} ^ekbedriften\.no$ [NC]
RewriteRule ^(.*)$ http://www.ekbedriften.no/$1 [L,R=301]
# Skriver om fra index.php til rot
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.ekbedriften.no/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>Du skal kun bruke redirecten jeg skrev, intet annet, og du skal ha .htaccess i rotkatalogen.
Har du den gamle .htaccess-filen din enda? Hvis ja, legg den til her som filvedlegg.
Tror jeg forstår hvordan du har satt opp dette nå. ekbedriften.no ligger egentlig i katalogen "ekenorway", sant? I såfall er det der du skal plassere den, det er jo det som er rotkatalogen for det domenet (hvert domene har jo sin rotkatalog. Når du går på domene.com, så får du jo opp index.php fordi index.php ligger i roten.).
Legger ved en modifisert .htaccess, denne vil ikke dirigere .com til .no, men skal gjøre som beskrevet ovenfor. Merk at den heter "htaccess.txt", så du må rename den til ".htaccess" når du laster den opp.
| Vedlegg | Størrelse |
|---|---|
| htaccess.txt | 572 byte |
Har du lastet opp den filen jeg sendte deg? I såfall, hva skjedde? Jeg har jo selv webhotell fra Bluehost, og dette er ikke noe problem.
Kan du lage en FTP login til meg og sende den via kontaktskjemaet. Da skal jeg se hva dette er for noe, for jeg har mine mistanker om at du gjør noe feil.
Det er jo veldig merkelig at det fungerer for meg, men ikke for deg.
Ja, jeg mottok dem og jeg har tuklet litt. Slettet din fil og lastet opp min egen, og alt fungerer nå.
Aner ikke hva grunnen var.
Ingen forskjell på reglene som omdirigerer, men kanskje grunnen var at det var æøå i kommentarene på filen ovenfor. (Har fjernet de bokstavene nå). Jeg skriver somregel alltid engelske kommentarer, også for meg selv, men brukte norsk her fordi det er mer brukervennlig.
Opprett en ny .htaccess som du skal legge i roten på .com-domenet - altså ikke webroten til .no-domenet. I den legger du inn:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^ekbedriften\.com$ [NC]
RewriteRule ^(.*)$ http://www.ekbedriften.no/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^www\.ekbedriften\.com$ [NC]
RewriteRule ^(.*)$ http://www.ekbedriften.no/$1 [L,R=301]
</IfModule>Flotters! Nei, modifisering av webserveren via diverse moduler i Apache er sannelig ikke bare bare. Man kan gjøre mye nyttig i .htaccess.
Personlig synes jeg særlig det er regular expressions som kan være trøblete. Men ufattelig nyttige, det er de. Man kan jo bruke dem i PHP også, noe jeg ofte gjør.
Uansett; da lærte jeg at man ikke skal putte æøå i kommentarer i .htaccess-filene. :)
PS: Husk å slette FTP-kontoen du laget til meg.

Dette står i min .htaccess akkurat nå: må jeg fjerne dette?
RewriteEngine on RewriteCond %{HTTP_HOST} ^ekbedriften.no$ RewriteRule ^/?$ "http\:\/\/www\.ekbedriften\.no" [R=301,L]Har gjort noe her nå... men vet ikke om det ble riktig da. Virker som du kan se slike ting, så kansje du kan sjekke igjen for meg?
Har kun benyttet fra domene.no -> www.domene.no. Den mottsatte veien klippet jeg ut. Var det riktig?
med hilsen
Thomas Kile