Hvordan sette opp videresending med htaccess

Om du drifter websider vil du gjerne før eller senere støte på en så grunnleggende oppdatering av siden at du får ny lenkestruktur. Eller kanskje du bytter domene, men ønsker å bevare rangeringen i Google. Da bør du bruke enn 301-vidersending.

Apache

Denne veiledningen baserer seg på systemer som kjører en Apache-server, og hvor du kan håndtere en .htaccess-fil i websidens rotmappe. Dette sjekker du ved å kontakte ditt webhotell, lese på deres websider eller opprette enn fil i websidens rotmappe som inneholder denne koden:

<?php phpinfo() ?>

Kall gjerne filen info.php og pek deretter nettleseren til den, for eksempel: http://domene.no/info.php

Søk etter _SERVER["SERVER_SOFTWARE"] og se om det står Apache der. Stemmer dette så kan du følge denne veiledningen videre.

Om oppsettet av videresending

Selv er jeg gjerne nødt til å kombinere flere typer videresendinger. Noen spesifikke, som peker en gammel død lenke til en ny fungerende. Disse videresendingene som går fra en bestemt lenke til et annet bestemt mål kaller vi 1 til 1-vidersendinger.

Så har vi nivåbaserte videresendinger. Disse videresender alle sider fra en bestemt del av websiden til en ny.

Logikken i et oppsett er at du starter med de mest spesifikke videresendingene, som først er 1–1-videresendingene, etterfulgt av de høyeste nivåene av nivåvidersendinger, og gradvis nedover til nivå 1.

Du kan ha så høye nivåer som du behæver, men i dette eksempelet holder vi oss til 3. nivå som det høyeste.

Klargjør htaccess-filen

De fleste sider har en fil i rotmappen som heter .htaccess. Har du ikke det kan du opprette en tom tekstfil og døpe den om til dette.

Har du en sånn fil kan du åpne den og se etter følgende kode:

<IfModule mod_rewrite.c>
RewriteEngine On

Om du ikke finner dette eller oppretter din egen fil, lim inn følgende kode:

<IfModule mod_rewrite.c>
RewriteEngine On
</IfModule>

Intern vidersending

Om du skal vidersende fra en lenke på et domene, til en annet lenke på samme domene, så kan du bruke intern vidersending.

Alle videresendinger skriver du inn i din .htaccess-fil, etter RewriteEngine On, men før </IfModule>.

Først setter du opp 1–1-vidersendingene, de ser sånn ut:

RewriteRule ^18-again-1988/$ /blogg/18-again/? [L,R=301]

Legg merke til bruken av tegn som ^, $ og ?, og mellomrommene. Denne kodelinjen forteller at om noen forsøker å gå inn på https://dittdomene.no/18-again-1988/, så blir de videresendt til https://dittdomene.no/blogg/18-again/. Metoden som brukes er en 301-videresending. Dette forteller blant annet Google at du permanent har flyttet siden. Mens en 404-feil som du vil unngå, forteller at siden er fjernet. Ønsker du å lage en midlertidig videresending bruker du 302.

Deretter setter du opp nivåvideresendingene, vi starter med 3. nivå:

RewriteRule ^rangering/1/A/(.*)$ /poeng/1/? [L,R=301]

Legg merke til at $-tegnet her er byttet ut med (.*)$. Det er også viktig å legge merke til skråstreken etter A-en i eksempelet. Uten den ville en side som https://dittdomene.no/rangering/1/Alfa blitt videresendt, mens vi nå begrenser vidersendingen til kun undersider av A/.

Deretter setter du opp 2. nivå:

RewriteRule ^rangering/1/(.*)$ /poeng/1/? [L,R=301]

Logikken her er den samme som på 3. nivå, men som du ser er det nå bare rangering/ og 1/ som er med. Ettersom vi ikke har satt opp videresendinger av flere lenker på 3. nivå enn den som slutter med A/, blir videresendingen på 2. nivå den neste regelen serveren ser etter. Alle lenker som dermed ikke er rangering/1/A/(.*)$ vil dermed benytte videresendingen rangering/1/(.*)$. Med andre ord kan du gjøre stor skade om du videresender for mye.

Til slutt setter du opp 1. nivå:

RewriteRule ^rangering/(.*)$ /poeng/? [L,R=301]

Her gjelder det samme som jeg forklarte om 2. nivå. Dersom ikke noen mer spesifikke videresendinger er definert på nivåene over, vil serveren til slutt se og utføre videresendingen på 1. nivå, om lenken inneholder rangering/ som første del av adressen etter selve domenet.

Det komplette oppsettet ser altså sånn ut i sammenheng:

<IfModule mod_rewrite.c>
RewriteEngine On
## 1–1 Redirects
RewriteRule ^18-again-1988/$ /blogg/18-again/? [L,R=301]
## Level 3 Redirects
RewriteRule ^rangering/1/A/(.*)$ /poeng/1/? [L,R=301]
## Level 2 Redirects
RewriteRule ^rangering/1/(.*)$ /poeng/1/? [L,R=301]
## Level 1 Redirects
RewriteRule ^rangering/(.*)$ /poeng/? [L,R=301]
</IfModule>

Ekstern vidersending

Når du bytter domene vil du gjerne videresende trafikken for å verken miste rangering i søkemotorer eller lenker inn fra andre websider. Helt enkelt er et domenebytte noe sånt som fra https://gammelside.no/ til https://nyside.no/.

Du kan gjøre det helt enkelt, og videresende alt til forsiden, eller du kan være mer spesifikk og benytte metoden som jeg viste over om intern videresending. Noen små forskjeller er det likevel.

Forskjellen ligger i at du må ha .htaccess-filen på ditt gamle domene, og at i den delen av koden du skriver hvor en regel skal vidersende til, må du bruke fullstendig domene som er ditt nye domene.

Du benytter for eksempel en kode som denne for 1–1-videresending:

RewriteRule ^blogg/lorem-ipsum/$ https://www.nyttdomene.no/blogg/lorem-ipsum/? [L,R=301]

Merk at vi her skriver inn hele domenet. Det er ikke verre enn det.

For viderekomne brukere

Dersom du har mange videresendinger finnes det måter å bruke variabler og lignende på. For eksempel for å slippe å gjenta hele domenet i hver eksterne videresending.

Og sist, men ikke minst, det er viktig å gjøre alt rett. .htaccess er ømfintlig for feil. Ved feil kan siden fort gi feilmelding, så ta en sikkerhetskopi før du starter dersom du allerede har en .htacess-fil.

{{ message }}

{{ 'Comments are closed.' | trans }}