301 Redirect – Ultimativ dansk guide til htaccess redirect 301

Er det mon htaccess redirect eller PHP omdirigering, og hvornår skal man bruge vHost ? Det kan være svært at vide hvornår man skal redirecte på en måde frem for en anden.
Her i dette indlæg, som nok er danmarks største 301 redirect guide, viser jeg dig hvordan og hvornår det er bedst at bruge det ene frem for det andet. Forkerte omdirigeringer kan have store konsekvenser for serverens performance.
redirects 301 dansk guide del 1

Ultimativ guide til danske redirects
Dette indlæg er en del af en større samling af tips og viden om redirect

I dag er det essentielt at have viden om, hvordan man implementerer en redirect og forstå, hvad en redirect indebærer, når man opretter en hjemmeside. Det er klogt at starte på den rette måde fra begyndelsen, da det forkerte valg kan have en større indvirkning end man måske forventer. Følgende råd og tips er rettet mod en bred vifte af hjemmesider på forskellige webhostingløsninger og har til formål at bidrage med professionel vejledning og informativ indsigt.

Dette er danmarks største guide med alt du behøver vide om 301 redirect på dansk

301 redirect checker – Omdirigerer din url korrekt?

Ved du om din hjemmeside omdirigerer korrekt? og ved du om der omdirigeres direkte til den nye url eller gennem flere omdirigeringskæder? det kan du herunder finde ud af. Udfyld med den url du vil teste, og du får svaret.

Hvorfor udføre omdirigeringer?

Hvorfor udføres omdirigeringer? Der kan opstå behov for at ændre URL-strukturen på ens hjemmeside, slette eller flytte sider, eller endda skifte domænenavnet. Ved hjælp af omdirigeringer kan man sikre, at både brugere og søgemaskiner bliver opmærksomme på disse ændringer. Hvis du for eksempel har flyttet en side, er det ikke bare en god idé, men et nødvendigt skridt at omdirigere al trafik fra den gamle URL til den nye URL. Dette sikrer, at brugerne havner det rette sted, og at eventuel værdi (linkværdi) følger med til den nye URL.

Det er derfor afgørende, at man udfører en korrekt omdirigering og ikke bare visuelt omdirigerer brugere og andre besøgende. Man bør informere brugerens browser, og især søgemaskinerne, om at der forekommer en omdirigering. Hvis omdirigeringen udføres korrekt, sker dette automatisk. Dog har jeg set mange tilfælde, hvor folk har brugt en JavaScript-omdirigering eller meta-refresh, men stadig fejlagtigt tror, at dette er en ægte 301-omdirigering. Javascript eller HTML redirect, er ikke en reel redirect.

Det vigtigste element er at tilføje de såkaldte headere, som f.eks. “301 Moved Permanently”. Det er denne header, der tydeligt angiver, at en side er blevet flyttet til et andet sted.

HTML Redirect og Javascript Redirect

Begge typer omdirigeringer, er nogle man vil kunne bruge i forskellige tilfælde. Man skal dog være obs på at det ikke anses som reelle omdirigeringer der fortæller browser og søgemaskiner at en side er flyttet permanent.

HTML redirect / HTML omdirigering

HTML / META redirect kan bruges, hvis man fx gerne vil omdirigere brugeren, uden at browseren registrere at siden er flyttet eller lign. Det kan fx være i tilfælde af at du har en webform, og når den er udfyldt vil du lige vise en hurtig besked eller tekst. Efter nogle sekunder bliver brugeren så omdirigeret til en anden side, eller siden opdaterer sig selv. Det kan være nyttigt som en handlingsbaseret omdirigering.

Meta refresh ser ud sådan:

<meta http-equiv="refresh" content="3"; url="ny webadresse">

Og placeres imellem head tags i html koden. Det den gør er at den opdaterer siden med urlen efter 3 sekunder.

Javascript redirect

Ligesom Meta omdirigering, kan javascript omdirigering også bruges til samme formål. Der er faktisk lige så mange formål og muligheder. Og det er reelt kun fantasien der sætter grænser. Forskellen er reelt bare at omdirigeringen laves med javascript. Det betyder også at google og andre søgemaskiner samt browseren, heller ikke registrere dette som en reel omdirigering.

her er et eksempel på en javascript omdirigering, hvor der først vises en besked, for derefter at omdirigere brugeren til en ny side efter 3 sekunder:

<div id="besked"></div>
<a href="#" onclick="omdirigering()">Omdiriger ved klik</a>
<script>
      function omdirigering () {
         setTimeout(nyURL, 3000);
         var besked = document.getElementById("besked");
         besked.innerHTML = "Siden omdirigerer om 5 sekunder, tak for besøget";
      }

      function nyURL() {
         document.location.href = 'https://kim-tetzlaff.dk';
      }
   </script>

Valg af metode til omdirigering af hjemmesider

Her tænker jeg ikke så meget på om det er 301 eller 301 redirect du skal lave, men mere om du skal gøre det via, htaccess, vHost, PHP eller WordPress

Ja hvilken en skal du vælge når vi snakker om redirects? Jeg har skrevet om det mange gange. Men hurtigt fortalt kommer det an på hvordan man ser på det og hvilke muligheder du selv har eller din hjemmeside har. Ud over det har de hver især sin indflydelse på hjemmesidens performance og hastighed, hvor htaccess metoden rent faktisk har den største indflydelse.

Så hvad skal man vælge? Man skal selvfølgelig vælge det man har det bedst med, men jeg personligt ville til hver en tid vælge at bruge vHost eller PHP. Det kommer an på hvad det er jeg vil opnå.  Htaccess vil altid være min sidste udvej.

Hvordan redirecter man så?

Reelt er det meget nemt, men der er alligevel nogle ting man skal tage højde for, og dette indebære blandt andet at benytte sig af de rette måder at omdirigere på. Du har allerede læst hvad en omdirigering er, så er det tid til at du finder ud af hvilke typer der findes til brug i vHost og htaccess.

redirect 301

Redirect bruges når man har enkeltstående sider man gerne vil have omdirigeret til en anden specifik url eller web-adresse. Det er denne du som udgangspunkt skal bruge da den på server niveau ikke har den store indflydelse på performance, og den er også utrolig nem at bruge i de fleste tilfælde.

Den ser ud sådan via htaccess:

Redirect 301 /gammel/fil.html https://kim-tetzlaff.dk/ny/fil.html

RedirectMatch via htaccess

RedirectMatch fungerer og har samme performance som sin lillebror Redirect, forskellen her er bare at man kan benytte sig af Regular Expressions (regex), hvilket gør at man kan lave langt mere avancerede filtreringer af de url’s der skal omdirigeres. Det kan måske være at du har 20 sider du gerne vil omdirigerer, alle ligger i samme mappestruktur på hjemmesiden, men du gider egentlig ikke skulle til at skrive 20 linjer kode, for at opnå det samme du kan med 1 linje.

Yderligere kan man overordnet sige, at hvis du i en rewrite kun bruger RewriteRule i en redirect, så kan du lige så godt bruge RedirectMatch i stedet for, det er langt hurtigere og belaster betydeligt mindre.

RedirectMatch ser ud sådan:

RedirectMatch 301 (.*)$ https://kim-tetzlaff.dk$1

Rewrite via htccess

Rewrites er et stort modul og kræver derfor også meget af serveren der skal fortolke dem. Lad mig allerede nu sige det, så vidt det er muligt, undgå rewrites – Der findes altid bedre løsninger.

Men med rewrites kan du se på rigtig mange parametre, lave regex, tjekke domæne, referer, filer, mapper og meget meget mere. Det er også derfor at det i mange tilfælde ikke skal være vejen man går når man vil lave en simpel omdirigering, da modulet ganske simpelt er alt for stort til så små opgaver.

Et godt eksempel på at det har en stor indflydelse, kan du læse om her, men hurtigt fortalt har en lille kode som den WordPress indsætter for sine permalinks (brugervenlige url adresser), en så stor indflydelse at performance bliver 15% dårligere. Så man skal altid prøve at undgå brugen af rewrites hvis det er muligt. Men bruger du det skal du huske altid at aktivere mod_rewrite, hvilket du gør ved at skrive linjen “RewriteEngine On” før dine RewriteRules og RewriteCond.

Rewrites ser ud sådan: (denne er taget fra WordPress)

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

Som du nok kan se, er der stor forskel på hvad man skal gøre og hvilken indflydelse det har på ens site, men ved man det, ved man også hvor man skal starte, og hvorfor.

Regular expressions (Regulære udtryk)

Et regulært udtryk, er et yderst avanceret matchingsprog, der bruges til at sammenligne og finde tekststrenge. Man kan på et lavt niveau sammenligne det med tekstprogrammer som word, hvor du fx kan lave en søg og erstat på ord og sætninger. Lærer man at beherske dette sprog, så er der næsten ingen begrænsninger for hvilke mønstre du kan sammensætte for at finde lige netop det du skal i din Rewrite eller RedirectMatch.

Så hvis du gerne vil lave dine redirects selv, hvilket jeg formoder når du læser dette indlæg, så vil det være en god ide at sætte sig ind i regex, som minimum hvad de forskellige tegn gør og ikke gør.

På de andre faner, kan du se nogle eksempler på tegn og hvordan man kan bruge dem.

RegEx beskrivelse og eksempler

TegnBeskrivelse og eksempler
.Punktum Matcher et enkelt tegn k.m matcher kim, kam, kom, kpm, kum etc.
+Gentager det forrige match en eller flere gange k+ matcher k, kk, kkk etc.
*Gentager de tidligere match nul eller flere gange. k* matcher det samme som k+ matches, men også hvis strengen er tom
?Gør matchen valgfri. farver? matcher både farve og farver
^Kaldes et anker, og matcher begyndelsen af strengen ^kim matcher en streng der begynder med kim
$Også et anker, fortæller at det er slutningen af strengen. kim$ matcher en streng der ender på kim.
( )Grupper flere tegn i en enkelt enhed, og gemmer match til brug i en reference. (kim)+ matcher kimkim – fordi + her bruges på gruppen.
[ ]En tegn klasse – matcher et af de tegn der står i k[ioa]m matche kim, kam eller kom.
[^ ]Negativ tegn klasse – matcher ethvert tegn, der ikke er skrevet k[^i]m matcher kom eller kam men ikke kim
{}Match et antal af forgående a{3} matcher aaa. eksakt 3 a{,3} matcher a, aa, aaa. op til 3 a{3,} matcher aaa,aaaa,aaaaa etc. fra 3 og op a{3,6} matcher aaa, aaaa, aaaaa, aaaaaa. fra 3 til og med 6 gange
\sMatcher et white space (mellemrum) Kim\sTetzlaff matcher Kim Tetzlaff.

RegEx kombinationer

Jeg vil her vise nogle eksempler på hvordan man kan bruge regex i forskellige situationer, for at finde frem til bestemte ting i sine strenge. når vi har med omdirigeringer at gøre vil strengen du leder i typisk være url, men det kan også være domæne, referer, fil og meget andet.

TegnBeskrivelse og eksempler
([0-9]+)Skal matche og gemme, hvis der er et eller flere tal
([a-z]+)Skal matche og gemme, hvis der er et eller flere små bogstaver
([a-zA-Z]+)Skal matche og gemme, hvis der er et eller flere små og store bogstaver

htaccess redirect eller vHost redirect?

Herunder finder du en del situationer hvor man benytter sig af omdirigeringer. og jeg prøver at komme ind på den bedste og hurtigste metode, især set i forhold til belastning af serveren og dens performance.

Redirect 301 – Klassisk htaccess redirect

En klassisk omdirigering er den omdirigering hvor man har en url og en destination. Det betyder at man rent faktisk bare ser på om en given gammel url bliver kaldt, gør den det, så omdirigerer man over til den nye url.

Den ser ud sådan:

Redirect 301 /gammel/fil.html https://kim-tetzlaff.dk/ny/fil.html

Ovenstående metode er ret nem, men omfattende når man har mange sider man gerne vil redirecte, men omvendt skal man også tænke på at den er utrolig hurtig afviklet på serveren og belaster nærmest ikke performance. Så den er absolut god at have ved hånden.

Dens storebror “RedirectMatch” er lige så god og hurtig, forskellen er bare at du her kan benytte dig af regex (regular expressions). Ved du ikke hvad det er, er det at du fx kan sige alle urls som indeholder navnet (Kim), skal omdirigeres til en given side. altså kan man lave langt mere avancerede redirects som skære flere urls over en kamp.

Det kunne se ud sådan:

RedirectMatch 301 ^/gammel/(.*)$ https://kim-tetzlaff.dk/ny/$1

Men husk at passe på, da du kan tage mere med end du lige ville når du bruger regex, og samtidig skal du kende systemet som ligger bag, da der findes mange måder at bruge det på som jeg også vil komme ind på i nogle af de andre punkter.

Redirect wordpress – SEO wise

WordPress er et af de mest SEO venlige open source systemer på markedet, men det har alligevel sine huller, som man lige så godt kan gøre noget ved. Fx har wordpress endnu ikke gjort noget ved manglende skråstreg for enden af webadresser. Så kan det godt være du tænker, jamen der er jo canonical tag på som netop sørger for at vise søgemaskiner at der skal være en skråstreg. Men problemet er bare at canonical tag kun er et plaster på såret. Man bør derfor sørge for både i forhold til indeksering, men også linkværdi, at der bliver omdirigeret til urlen med skråstreg som er den standard wordpress har. Det gør man sådan:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^(.*)\.(.*)
RewriteCond %{QUERY_STRING} =""
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ http://%{HTTP_HOST}/$1/ [L,R=301]

Redirect kun forside

Kun at omdirigere forsiden, kan give nogle problemer som vi lige så godt kan nævne her. Det man skal være opmærksom på er om man laver brugervenlige urladresser eller ikke, da fx WordPress permalink metoden, laver en rewrite, som man lige skal tage hensyn til:

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

Men ved man at man lige skal tage hensyn til det, ja ved man også hvilken metode man skal bruge til formålet.

RewriteEngine On
RewriteRule ^$ https://kim-tetzlaff.dk/ [L,R=301] 

^ Betyder starter med – hvilket i dette tilfælde vil sige, starter med ingenting.
$ Betyder at strengen afsluttes

Redirect alle sider undtagen nogle få

Der er flere måder at løse denne på, og det kommer i grunden an på situationen. og jeg vil her vise nogle eksempler på hvordan du kan løse forskellige situationer.

Der er jo den klassiske metode, hvor man udvælger dem der skal redirectes og hvor de skal redirectes til. Så vil det nemlig kun være dem du har skrevet der bliver redirected.

Redirect 301 /gammel/fil1.html https://kim-tetzlaff.dk/ny/fil1.html
Redirect 301 /gammel/fil2.html https://kim-tetzlaff.dk/ny/fil2.html
...

Men har du fx en mappe du gerne vil redirecte over til en side, eller måske til samme urls bare i en anden mappe, så skal du benytte dig af RedirectMatch.

RedirectMatch Eksempler: Ovenstående kunne blive løst med en RedirectMatch, selvom det er noget usandsynligt at scenariet vil se ud sådan i virkeligheden. Du vil stadig få en ide om hvordan du kan bruge RedirectMatch.

RedirectMatch 301 ^/gammel/(.*)?$ https://kim-tetzlaff.dk/mappe/$1

^/mappe/(.*)$ Betyder hvis urlen starter med “/gammel/” og der muligvis kan være 0 eller flere tegn efter, så skal den redirectes.

Redirect Fra et domæne til et andet

Det at redirecte fra et domæne til et andet, er meget nemt, så længe man forstår situationen man er i lige nu. der er nemlig flere måder at løse det på.

Har du fx flere webhoteller, hvor du gerne vil redirecte de domæner der er tilknyttet de forskellige webhoteller, kan du bruge RedirectMatch til at omdirigere fra det ene domæne til det andet. Det er dog vigtigt at htaccess filen er placeret på det webhotel hvorfra du vil omdirigere, da den tager ALT og omdirigere til det nye domæne:

RedirectMatch 301 (.*)$ https://kim-tetzlaff.dk$1

(.*)$ Find og gem hele urlen der bliver efterspurgt
$1 udskriv den gemte url
Du kan også bruge:

Redirect 301 / https://kim-tetzlaff.dk/

Peger domænet derimod på samme webhotel som der hvor du vil redirecte over til, skal du bruge en anden metode, da ovenstående, nemlig også vil have indflydelse på det domæne du prøver at redirecte til, og vil derfor lave det man kalder et redirect loop som aldrig bliver færdigt. Her skal du i stedet se på en rewrite til formålet.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^gammelt-domæne.dk$ [NC]
RewriteRule ^(.*)$ https://kim-tetzlaff.dk/$1 [L,R=301]

Det vi gør her er at bruge det der hedder en RewriteCond, som sådan set er en form for regel, der skal være opfyldt, før RewriteRule slår igennem. og i dette tilfælde spørger jeg om hostnavnet (domænenavnet) starter med (^) gammelt-domæne.dk, og gør domænet det, ja så vil den omdirigere til kim-tetzlaff.dk

Men hvad så med forespørgelser på domænet med www, eller andre subdomæner?
jo hvis du ændre lidt i RewriteCond, sådan at den også ser på om domænet har en sub (xxx.gamelt-domæne.dk), så skulle der være taget hånd om den del også.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.)gammelt-domæne.dk$ [NC]
RewriteRule ^(.)$ https://kim-tetzlaff.dk/$1 [L,R=301]

Redirect fra et domæne til en andens forside

Tager vi eksemplet fra før og bruger her, vil det komme til at se ud som nedenfor.

Rewrite:
Bruges i tilfælde af at domænet peger på hoveddomænets webhotel.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.*)gammelt-domæne\.dk$ [NC]
RewriteRule ^(.*)$ https://kim-tetzlaff.dk/? [L,R=301]

RedirectMatch:
Bruges hvis domænet ligger på et andet webhotel end hoveddomænet.

RedirectMatch 301 (.*)$ https://kim-tetzlaff.dk/

Redirect 301 til hoveddomænet fra andre domæner

I rigtig mange tilfælde, kan man have mere end et domæne der peger på et webhotel, og så er det smartere og bedre for performance, at man prøver at tilgodese alle domænerne med så lidt kode som muligt. som du jo kunne læse tidligere i indlægget, så har rewrites nemlig stor betydning for en hjemmesides performance.

RewriteEngine On
RewriteCond %{HTTP_HOST} !^kim-tetzlaff\.dk$ [NC]
RewriteRule ^(.*)$ https://kim-tetzlaff.dk/ [L,R=301]

Det vi gør her er at sige, hvis ikke (!) domænet starter med (^) kim-tetzlaff.dk, så skal vi redirecte til kim-tetzlaff.dk.

Redirect en mappe til en anden mappe

Omdiriger alle sider som ligger i en mappe, til et andet domæne, med samme urlstruktur

RedirectMatch 301 ^/mappe/(.*)$ https://kim-tetzlaff.dk/mappe/$1

^/mappe/(.*)$ Betyder hvis urlen starter med “/mappe/” og der muligvis kan være 0 eller flere tegn efter, så skal den redirectes.

Skift filendelse med redirect

At skifte filendelsen (file extention), er utrolig nemt. det eneste du skal sørge for er at få fat i urlen uden endelse, og selvfølgelig gemme den så du efterfølgende kan udskrive den, og tilføje den fil endelse du gerne vil have i stedet for.

RewriteEngine On
RewriteRule ^(.*)(\.php)$ https://kim-tetzlaff.dk$1.html [L,R=301]

Redirect flere mapper på en gang

Hvis du gerne vil redirecte flere mapper, kan du enten bruge den forgående metode hvor du redirecter en mappe til en anden, eller du kan bruge denne metode hvor du får fat i alle de mapper du vil, i en omskrivning.

RedirectMatch 301 (mappe1|mappe2|etc)/(.*)\.(.*)$ https://kim-tetzlaff.dk/ny/$2.$3

eller hvis du gerne vil redirecte til samme mappestruktur op et andet domæne, kan du også gøre det:

RedirectMatch 301 (mappe1|mappe2|etc)/(.*)$ https://kim-tetzlaff.dk/$1/$2

Redirect en mappe med specifikke tegn

nogen gange kan det være nødvendigt at lave et match kun på bogstaver, tal eller noget andet, hvis fx man er sikker på at mapperne eller filerne man vil redirecte kun indeholder det, og man ikke vil redirecte filer eller mapper som indeholder andre tegn og tal. Det regex man skal bruge ser ud sådan: [a-z], men den tager kun hensyn til små bogstaver, vil man have både store og små bogstaver skal man skrive [a-zA-Z].

Mapper skifter til ny mappe:

RedirectMatch 301 ^/[a-zA-Z]+/(.*)\.html$ https://kim-tetzlaff.dk/ny/$1.html

Fra bogstavfil til mappe:

RedirectMatch 301 /([a-zA-Z]+)\.html$ https://kim-tetzlaff.dk/$1/

Redirect kun tal

RedirectMatch 301 ^/[0-9]+/(.*)\.html$ https://kim-tetzlaff.dk/ny/$1.html

Tal, bogstaver og måske en bindestreg

Den ligner de ovenstående regex, den store forskel er at jeg har skrevet en bindestreg og et spørgsmålstegn bagefter, hvilket betyder at bindestregen kan måske være der.

RedirectMatch 301 ^/[0-9a-zA-z-?]+/(.*)\.html$ https://kim-tetzlaff.dk/ny/$1.html

Fjern Query fra url

Det er tit sådan at man gerne vil fjerne query fra urlen, da denne kan skabe dobbelt indhold. Det er forholdvist nemt.

RewriteEngine On
RewriteCond %{QUERY_STRING} !=""
RewriteRule ^(.*)$ /$1? [R=301,L]

Der hvor det kan gå galt er hvis der er noget på hjemmesiden, der rent faktisk skal bruge en query til noget, dette kan fx være administrationen på et site, reklamer, affiliate links mm. Her skal man så ind og tage hensyn til det, og fortælle at den rent faktisk ikke skal fjerne den, hvis en query er sat.

RewriteEngine On
RewriteCond %{QUERY_STRING} !=""
RewriteCond %{QUERY_STRING} !^query=.*
RewriteRule ^(.*)$ /$1? [R=301,L]

Man kan også gør det sådan at hvis der er tale om bestemte mapper, skal den heller ikke fjernes

RewriteEngine On
RewriteCond %{QUERY_STRING} !=""
RewriteCond %{REQUEST_URI} !^/administration.*
RewriteRule ^(.*)$ /$1? [R=301,L]

Redirect query til brugervenlig url

Men kommer tit ud for at man lige skifter sin gamle metode ud med en ny, dette skete især for nogle år siden hvor man stadig brugte querys i urlen for at bygge hjemmesiden på dynamisk vis. Men i dag laver man jo dynamiske sider ved at benytte sig af brugervenlige urladresser, og PHP eller serversidekoden, tager sig så af at behandle og finde den rette side.

Men de gamle sider skal jo omdirigeres.

RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/index\.php$
RewriteCond %{QUERY_STRING} ^id=([0-9]*)$
RewriteRule ^(.*)$ https://kim-tetzlaff.dk/page/%1.php? [L,R=301]

Redirect hvis query indeholder specifik tekst

RewriteEngine On
RewriteCond %{QUERY_STRING} ^id=([0-9]*)$
RewriteRule ^(.*)$ https://kim-tetzlaff.dk/? [L,R=301]

Fjern skråstreg fra url (trailing slash)

Det kan nogen gange være nødvendigt at fjerne den sidste skråstreg i en url, fordi det tit er sådan at hjemmesider viser det samme indhold på urlen med og uden slash i enden, hvilket skaber dobbelt indhold.

RewriteEngine On
RewriteCond %{REQUEST_URI} (.*)/$
RewriteRule ^(.*)/$ https://kim-tetzlaff.dk/$1 [L,R=301]

Det samme gælder tilføjelse af skråstreg i enden.

RewriteEngine On
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ https://kim-tetzlaff.dk/$1/ [L,R=301]

Det ses forholdsvis tit at der generere urls med flere skråstreger efter hinanden, hvilket også her skaber dobbelt indhold. Så det bedste er at redirecte. Både for at brugeren hvis der linkes, linker til det rette indhold og med rette url. Men også for at linkjuice ryger det rette sted hen.

RewriteEngine On
RewriteRule ^(([^/]+/)*)/+(.*)$ https://kim-tetzlaff.dk}/$1$3 [R=301,L]

Http https redirect (Altid SSL)

Omdirigering af alle urls når du skifter fra HTTP til HTTPS er utrolig vigtigt, du mister mange placeringer hvis du glemmer det og dermed mange besøgende.

Dette eksempel kan bruges i din htaccess fil:

RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

404 redirect htaccess

404 not found, er reelt en header der sættes når en side på ens hjemmeside ikke kan blive fundet. Det fortæller blandt andet google at den side skal de ikke indeksere. Har du i stedet slettet en side med vilje, bør man faktisk bruge den der hedder 410 Gone, som reelt betyder at den er slettet permanent.

I mange tilfælde ville man dog lave en 301 omdirigering til en ny side, da den gamle ofte havde noget værdi man gerne vil bibeholde på siden.

Men vil du gerne lave en redirect til enten 404 eller 410, kan du gøre følgende:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/search/.* [OR] #Alle sider under mappen Search
RewriteCond %{QUERY_STRING} ^s=.* # eller alle querys hvor s er sat
RewriteRule .* - [R=410,L]

Flere er undervejs

Jeg vil udvide denne liste konstant, så kom endelig tilbage hvis du gerne vil følge med og lære noget om omdirigeringer.

Fejl du kan opleve ved at arbejde med redirect

denne webside har et loop ved omdirigering

Det betyder at der er en omdirigering på din hjemmeside som først omdirigere til en url, og den url omdirigere så tilbage til den anden url. Omvendt kan det også være at du har en omdirigering som omdirigere til sig selv.

Spørg endelig

Har du en redirect du ikke lige ved hvordan du skal lave, eller sagt på en anden måde. Har du en situation du ikke helt ved hvordan du skal redirecte, så tøv ikke, skriv en kommentar, eller en mail, så skal jeg gøre alt for at besvare.

kim tetzlaff

Om forfatteren

Se mere Kim Tetzlaff

Jeg har siden 1995 arbejdet med og haft stor fokus på Teknisk SEO og hastighed på hjemmesider. Jeg er programmør, nørd og stolt af det. Jeg bygger hjemmesider, hastighedsoptimere, ser på det SEO tekniske og det er mere end 25 års erfaring der ligger bag – Du er i gode hænder når jeg laver noget for dig 🙂

53 kommentarer til “301 Redirect – Ultimativ dansk guide til htaccess redirect”

    • Nye design 🙂 dette er min nye personlige hjemmeside. den anden ktj-media.dk får selvfølgelig også et designløft, men har lige en del opgaver jeg skal have færdige i år 🙂

      Svar
  1. Hej Kim
    Flot lavet guide jeg har set en del guider omkring 301 før men her
    har du virkelig fået det hele med
    godt gået

    Svar
    • Har også prøvet at få det meste med, i hvert fald det som rigtig mange har spurgt mig om gennem tiden. Men men, den vil blive udbygget med tiden, så den bliver endnu større og vil have endnu flere tips.

      Svar
    • Det var så lidt – Nej de harmonikaer er ikke en decideret WordPress ting, det var godt nok indbygget i det tema jeg har taget udgangspunkt i, men jQuery UI giver dig muligheden, og der findes et hav af forskellige scripts du kan bruge.

      Svar
  2. Stærkt indlæg. Har lige leveret et større stykke redirect arbejde, og kunne godt ha’ brugt dit indlæg for en uge siden! Noget mere struktureret og let tilgængeligt end meget andet jeg har set. 🙂

    Svar
  3. Hej Kim,

    Woooo Wow… Lige hvad jeg manglede.. Jeg kæmper fra tid til anden med htaccess
    Dette hjalp… Jeg fik rettet lidt hist og pist!! Så det triller bedre…

    Keep it up.. Jeg skal nok lige skyde / skrive hvis der er noget, der mangler… næppe! 🙂

    God Jul

    Peter

    Svar
  4. Hej Kim

    Hvis man har et bibliotek med nogle under biblioteker man gerne vil have alle til at gå til forsiden til ens hjemmeside, hvordan ser koden så ud??

    Eks.
    foto
    mormor
    morfar
    farmor
    farfar
    O.s.v

    Google har indexeret mine sider så de ligger ude på Google og hvis der eks. dukker et links op på. eks. foto/mormor/image77.jpg, så skal der være således at dette links redirecter til min forside – da bibliotekerne jo er blevet slette.

    Jeg kan sagtens redirecte selve hovedmappen FOTO til min forside, men ikke alle de andre biblioteker.

    Tak for dit svar
    Anders Pedersen

    Svar
    • Hej Anders,

      Den er faktisk ligetil hvis man tager et kig oppe i listen, vil man kunne hente inspiration til hvordan det skal gøres, men du kan også se hvordan her:

      RedirectMatch 301 foto/?(.*)$ http://www. domænet .dk/

      Domænet uden mellemrum selvfølgelig 🙂 linket skulle bare ikke være der

      Svar
  5. Hej.

    Jeg kæmper helt vildt med alt det her Redirect, jeg håber du måske kan hjælpe.
    Jeg har fået utallige forskellige koder fra folk som jeg har prøvet, men kan ikke få det til at virke.
    Jeg har 4 helt nye domæner, det er kun det ene domæne som joomla er installeret på og hvor jeg har opbygget min hjemmeside. De andre 3 domæner er tomme (med bindestreg, uden æ,ø,å osv)
    Jeg har oprettet en tom index.php i FTP på de 3 tomme domæner, her har jeg som det sidste, prøvet at skrive din kode ind:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^elastik-snoerebaand\.dk$ [NC]
    RewriteRule ^(.*)$ http://elastiksnørebånd.dk/ [L,R=301]

    Altså elastiksnørebånd er mit hoveddomæne.
    Når jeg nu taster elastik-snoerebaand.dk ind i browser, så viser den faktisk bare en hvid side med denne kode.

    Hvad gør jeg forkert? Og Hvad kan/skal jeg gøre?

    Vil gerne have alle de 3 domæner omdirigeret til den 4 og gerne samtidig også Non www til www.

    Hoveddomænet har fået lagt Non www til www ind.

    På forhånd tak!

    Mvh. Camilla

    Svar
    • Kan se du vidst har fået det til at virke. Men det man skal gøre er at man skriver det i en .htaccess fil.
      Men vil du gerne have det skal gå endnu hurtigere, så skal du i stedet bruge “RedirectMatch 301 (.*)$ http://elastiksnørebånd.dk$1” da den ikke har indflydelse på hastigheden. og er nemmere at have med at gøre. den redirecter også alle kald til den side.

      Svar
  6. Hej Kim
    Tak for en brugbar og interessant artikel. Den var givende. Jeg har et spørgsmål, som jeg håber du har lyst til at svare på. Jeg har lavet en redirect(plugin) på en wordpress side og det fungere endelig som den skal ift. indhold. Den ændre url så der på forsiden vises en kalender, men det giver mig en del problemer med deling af siden på fx. Facebook. ligeledes virker visuel editor i backend på WordPress. Jeg vil gerne lave den i .htaccess og tænkte om du havde et par fif? PÅ forhånd tak og igen, tak for en interessant artikel. mvh H

    Svar
    • Første spørgsmål til dig må være, hvorfor ændre du urlen for at du kan vise en kalender på forsiden? formoder der er tale om stengade.dk? i så fald ville min løsning være at du rent faktisk laver program siden til at være forsiden. Det kan du gøre under indstillinger -> læsning… eller alternativt bygger en forside ud fra en templatefil til formålet. Der er efter min mening ingen grund til at omdirigere brugeren til en underside, for at vise denne kalender på forsiden.

      Svar
  7. Hejsa 🙂

    Det WordPress plugin du nævner, laver det redirect som PHP script?
    For hvis jeg forstår dig korrekt, så er PHP det mest optimale at bruge, når vi taler performance på en website!?

    Svar
    • Ja det laver det via php, men den gør dog også det at den søger i databasen, gemmer data og historik mm. Hvilket betyder at det er ikke det samme som det jeg mener når jeg siger via php. Når jeg siger php så mener jeg kun php. Men jo det er bedre for performance med det plugin i stedet for htaccess. Man skal bare lige huske at rydde ud i loggen da den ellers på nogen sites kan blive stor og gøre så sitet køre langsommere. Og så skal du ikke glemme at det jo er et plugin hvilket jo også har indflydelse på performance.

      Alternativt kan man via en templatefil til ikke fundne sider lave alle sine regler og omdirigeringer. Hvilket er bedre end at bruge pluginet.

      Svar
  8. Hej Kim
    Kan man lave en redirect fra mitdomæne.dk til mitnyedomæne.dk og beholde url mitdomæne.dk/ og hvad man nu kalder på mitnyedomæne.dk
    FX kalder man mitnyedomæne.dk/kontakt så siger urlen mitdomæne,dk/kontakt

    Svar
    • Hej Kim,

      Lige det du skriver kan man ikke. En redirect fra mitdomæne.dk til mitnyedomæne.dk, vil jo omdirigere brugeren til mitnyedomæne.dk og sørge for at brugeren forbliver på det domæne.
      “FX kalder man mitnyedomæne.dk/kontakt så siger urlen mitdomæne,dk/kontakt” Dette er jo så den anden vej, set i forhold til det du først skriver. der omdirigere man jo mitnyedomæne.dk til mitdomæne.dk.

      Det er svært at se hvad det er du reelt vil, men hvis du gerne vil skifte din hjemmeside over til et nyt domæne, skal du pege dit nye domæne over på den samme server/webhotel (hvis det er muligt). Og derefter skal du på samme webhotel, lave en redirect fra det gamle til det nye domæne. Du må lige uddybe, hvis ikke det var det du mente 🙂

      Svar
      • Hej
        Min datter er blevet forhandler og har fået sin egen webshop hos et firma, firmanavn.dk/123456789sshsfh/ det er sært at huske og meget for kunderne at taste der har vi købt er nyt domæne, håbede at man så kunne lave det således at når man skrev det nye domæne kunne man få vist indholdet af firmanavn.dk/123456789sshsfh/ på det nye domæne.
        Jeg har lavet en iframe lige nu men det retter ikke url’en når man klikker rundt på siden, hvis du forstår?

        Svar
        • Hvad er det for et firma? Er det en hostet shopløsning, burde du kunne spørge det firma om netop det. Hoster i selv løsningen (på et webhotel) hvor i har adgang til ALLE filer inkl shoppen. Så kan man gøre stort set hvad man vil.

          Det lyder dog meget som om det er en hostet shopløsning, hvor man ikke selv kan gøre så meget. Hvilken shop er der tale om?

          Svar
        • Det er så det man kalder en hostet shopløsning. der skal i kontakte dem hun har et samarbejde med. For at høre om det er muligt at benytte sit eget domænenavn frem for den anden url/webadresse. Der er ikke ret meget man kan gøre da det er en hostet webshop/forhandler webshop.

          Dertil vil de sikkert, hvis det er muligt, komme med instruktioner til hvad i skal sætte op i DNS for at det kan lade sig gøre.

          Svar
  9. Hej
    Tak for guiden, som virker nogenlunde forståelig – er ikke programmør 🙂

    Har nogle sider
    /manufactures
    /sitemap
    /price-drop

    som er indexerede, men som ikke har indhold og som jeg gerne vil have væk fra index 🙂

    Hvad er her bedste mulighed?
    – 301 til forsiden
    – 410 (ved ikke helt hvad den dækker over men har set den beskrevet som den kode der fjerner siden)

    Hvordan undgår jeg, at siderne dukker op igen?

    På forhånd tak.
    Mvh Henrik

    Svar
  10. Hej Kim

    Virkelig god guide som jeg vil bruge som opslagsliste, samt henvise til.

    Jeg har lavet et lille indlæg angående redirects for URLS med ÆØÅ

    Svar
    • Takker søren, kunne være at jeg skulle bygge det ind i guiden også, sådan at æøå og andre specialtegn som fx mellemrum etc. Også kommer med i guiden. Sådan så der er reelle eksempler på hvordan det bruges og gøres. Har skrevet det mange gange i fora forskellige steder på nettet. Men for en god ordens skyld kommer den også med her 🙂

      Svar
      • Ja, helt sikkert du skal få det med…. det er den sidste detalje til den mest komplette redirect guide på dansk:D

        Svar
  11. Tak for en god guide Kim

    Jeg kan se, at jeg har en grum uvane som (muligvis) påvirker min hastighed; nemlig at skrive min 301’ere direkte ind i htaccess filen.

    Specielt for nogle ældre sites hvor at URL’er er ændret over tid, har jeg mange hundrede redirects. Jeg kan forstå her, at htaccess så ikke er den rette model.
    Men hvad er så?

    Yoast SEO Pro kommer med et redirect plugin – er det en god løsning til så mange redirects?
    Eller er der andre plugins/metoder som er smartere med WordPress?
    Tænker at jeg belaster sitet mindst, ved at smide det ind som PHP i min 404 fil?

    Svar
    • Hej Nicolai,
      Både og, det kommer lidt an på hvordan dine nuværende redirects ser ud. Benytter du de små redirects som fx “Redirect 301” eller “RedirectMatch 301” så vil det kun have meget lidt indflydelse på performance også selvom der er 1000 redirects. Men bruger du Rewrites til noget af det, så skal du til at finde andre muligheder som fx PHP, vHost, Redirect 301 eller redirectMatch 301.

      Skal du gøre det via PHP, skal du helst ikke benytte dig af plugins til netop det, da de har det med at skulle gå gennem database, wordpress og meget andet. Altså er det samtidig også krævende for serveren. Især fordi 404 sider typisk ikke bliver cached, så vil det være serverens rå energi der bliver brugt i større format.

      Men ja, for at du belaster performance mindst muligt, skal du finde en metode som:
      – kun læses en gang (vHost)
      – benytter serverens mindre moduler (htaccess og redirect 301 eller redirectmatch 301)
      – eller kun læses når der skal redirectes (redirects via PHP) så længe man er obs på at det fx i wordpress, alligevel godt kan belaste mere end det skal.

      Det du skal undgå er:
      – Rewrites i htaccess er nogo når vi snakker performance
      – Database læsninger/søgninger
      – Plugins

      Svar
  12. Hej Kim.

    Tak for en utrolig brugbar og lærerig guide – det er helt sikkert ikke sidste gang jeg gennemlæser den!

    Mit spørgsmål går på, at jeg står og har et website, hvor alt er skiftet til HTTPS. Problemet er at alle gamle links der er benyttet på sociale medier, nyhedsbreve mm. stadig er HTTP. Hvordan laver jeg lettest en redirection på dette?

    På forhånd mange tak for hjælpen.

    Vh. Cecilia

    Svar
  13. Hej Kim
    Har gennemlæst dit indlæg om redirects, hvilket jeg også tidligere har gjort, med en gemt reference til at her skulle jeg kunne finde det meste jeg behøvede, forklaret på Dansk.

    Jeg sidder og roder med at en varekatagori skal ændres fra /produkt/ til /shop/ men skal bibeholde efterfølgende adresse.

    Eksempel:
    https://skole-leg.dk/produkt/8715347007736/
    ændres til:
    https://skole-leg.dk/shop/8715347007736/

    Med en 301 permanent redirect, men ønsker at ramme alle produkter i undermappen /produkt/ uden at lave dem enkeltvis????

    Svar
  14. Hej Kim
    Tusinde tak for din fine guide. Vi slås dog stadig med et problem.
    Ikke alle redirects på vores hjemmeside fungere på alle devices. Vi bruger Yoast SEO Premium til at lave dem i. Vi har lige lavet om hele hjemmesidens map og har derfor en del redirects. De fungerer fint på min mac, men på min iphone virker nogle af dem ikke. Det gør de heller ikke på min makker almindelige pc.
    Hvad skal vi gøre ved det? Det er jo ret irriterende at folk ikke kommer hen på den rigtige side…
    Vi har bla. et redirect på til
    som virker fint hos mig men ikke hos makkeren.
    Hvis vi skal sætte de nye redirect op i en PHP – hvilken skal vi så bruge? Der ligger mega mange PHP i vores Theme DIVI til wp.

    Svar
    • Der kan være mange grunde til at det ikke virker på en given computer eller enhed. Typisk er det dog at det er fordi enheden gemmer på en cachet udgave, og derfor slet ikke besøger hjemmesiden. Skal du teste om en redirect virker, kan du gøre det via denne redirect tester eller via en af de mange headers testers som du kan finde på google. Redirecter den der, gør den det også for de fleste andre.

      Når det så er sagt, så skal du nok lige tage et kig på det at hjemmesiden ikke sender en udløbsdato med i dens headere. Det skal du lige indstille på siden. Benyt evt WP Rocket, så får du også en hurtigere hjemmeside samtidig. Den sætter de rette headere og udløbsdatoer for de forskellige kald der sker til din hjemmeside. billeder, css, js, html etc.

      Svar
  15. Hej Kim.
    Gl tråd, men evig aktuel når man starter en ny hjemmeside.
    Der er flere muligheder for at lave en redirect kan jeg konkludere at såfremt man har en wordpress hjemmeside så er en af de mange wordpress redirect plugin fuldt lige så godt som at anvende en af de andre løsninger du skitsere.
    På forhånd tak
    Ole

    Svar
    • Ja Mange wordpress plugins kan i dag også skrive i fx htaccess, men der hvor det store problem er, er ved at de der benytter de plugins ikke aner hvad det reelt gør, og mange plugins skal lige opsættes før de rent faktisk gør det på den bedste måde. Men det er jo også svært at vide som bruger af dem, hvis ikke man selv ved hvad der er den bedste måde at lave en redirect på. Men som standard er det ofte sådan, at der laves redirect via wordpress, hvilket er krævende for serveren set i forhold til hvis den redirect laves i htaccess. Hvilket uden tøven nedsætter performance på serveren.

      Svar
  16. Hej Kim

    Vi har netop lavet en ny side med en ny host og skal derfor have lavet en 301 redirect af vores gamle domæne. Er det rigtigt forstået, at vi skal opsætte .htaccess på det gamle domæne? Eller skal det sættes op på det nye?

    Mvh Michael

    Svar
    • Jeg personligt ville lade det gamle domæne pege over på den nye side, sådan at de kalder samme hjemmeside/server og på den nye hjemmeside/server lave redirect fra det gamle til det nye domæne

      Svar

Skriv et svar til Kim Annuller svar

Kategorier og tags på dette indlæg

, ,

Måske du også vil læse disse indlæg

Ja, jeg har også skrevet andre indlæg som måske kunne have din interesse