Skal du skifte CMS, have ny sitestruktur eller lign, så vil du i mange tilfælde have brug for at kunne oprette store mængder 301 redirects. Det kan være et meget tungt arbejde, fordi det hurtigt risikerer at blive vanvittigt manuelt og krævende, hvis man ikke passer på.
Så her er en lille håndbog i, hvordan du gør forarbejdet til 301 redirects på en effektiv måde og ikke kommer til at tabe overblikket alt for meget undervejs. Ikke overraskende for en del af mine læsere, Twitter-followers m.m., skal der bruges lidt Excel her.
Hvorfor 301 redirects?
301 redirects er den bedste måde at håndtere ændringer af sider på. De er gode både til søgemaskiner, som nu ved, at dit indhold er flyttet et andet sted hen og til besøgende, der fortsat havner det rigtige sted, hvis de følger bookmarks i deres browser, gamle links fra andre websites osv.
Implementeret rigtigt, gør 301 redirects underværker.
Best practice – og virkeligheden
I best case får man opsat en 301 redirect på hver evig eneste URL, sådan at skiftet går så glat som muligt, både i forhold til Google og de besøgende og ingen nogensinde mødes af en fejlmeddelelse. Men i virkeligheden er det desværre ikke altid praktisk muligt.
Derfor tager jeg udgangspunkt i, at du har et website med rigtigt mange URL’er, og skal skifte dem på en måde, der ikke er helt mekanisk og 1-til-1 sammenlignelig. F.eks. hvis du skifter både CMS og struktur på dit site på samme tid. (Eller opkøber en konkurrent og gerne vil have 301’et deres domæne bedst muligt til dit).
Har du færre URL’er, eller et nemmere URL-skifte, hvor du f.eks. blot skal skifte domæne, filtype, fjerne mapper eller lign, bliver din opgave nemmere. (Og så kan det ofte klares med nogle regler i en .htaccess-fil eller lign, så du ikke behøver at gå gennem den lange proces nedenfor).
Til gengæld tager jeg også udgangspunkt i, at du er på forkant med udviklingen og iværksætter 301-processen på forkant, mens dit gamle site stadig er online. Hvis du først kommer i tanke om 301 redirects, når dit nye site er lanceret, så er du på r*ven og det bliver meget sværere at håndtere på en struktureret måde.
Saml rådata ind først
Allerførst har du brug for at indsamle data over din nuværende URL-struktur, så du kan få et ordentligt overblik over, hvad du har at gøre godt med på dit nuværende site, og hvad der skal ændres på.
Kør først Xenu (eller lign. crawler, hvis du har andre præferencer) og få en liste over alle dine URL’er på domænet. Når Xenu har kørt, kan du blot vælge “Create Google Sitemap file”, og så får du alle URL’er på dit site leveret i et format, som nemt kan importeres til Excel.
Prioritér dine URL’er
Jeg går som nævnt ud fra, at du har for mange URL’er til at have overskud til at håndtere dem alle. Hvis alle dine sider skal redirectes, eller du er så heldig at ændre så lidt, at det nemt kan beskrives i en regel, så hop dette afsnit over.
Vi skal nemlig prioritere i URL’erne, så du i hvert fald får opsat 301’er ordentligt for de væsentligste sider på dit domæne. De væsentligste URL’er for dig er dem, som der bliver linket til, og dem der har flest besøgende udefra (eller genererer størst omsætning). Ideen er, at dit tab (både i linkværdi og i kroner/ører) skal være så lille som muligt og at så få mennesker som muligt skal bemærke, at noget er blevet ændret.
Læg ud med at trække link-data ud fra Google Webmaster Tools, Sitexploration eller hvad du nu bruger til at tjekke backlinks med – så du kan få fat på en liste med de URL’er, der bliver linket til fra eksterne sites. Data gemmes i et format, som Excel kan læse.
Tag bagefter fat i Google Analytics og træk en sorteret liste over adresser med flest besøgende/størst omsætning eller lign. ud. (Gerne flere lister, hvis du har flere forskellige parametre, du gerne vil have taget hensyn til).
Har du URL’er som ikke falder i ovenstående kategorier, men som alligevel er vigtige for dig at få med i en redirect, så få lige skrevet dem ned også i listeform.
Nu har du data nok til at arbejde videre – og så starter vi Excel op.
Lad Excel gøre arbejdet
Excel kan nemlig hjælpe dig en del undervejs og gøre processen noget mindre smertefyldt.
Læg dine URL’er fra det eksisterende website i A-kolonnen i det første faneblad. Dine link/Analytics-data osv. lægger du ind i A-kolonnerne i de næste faneblade i arket.
Med Lopslag/Vlookup-formlen kan du så hurtigt få Excel til at hjælpe dig med at identificere de prioriterede URL’er, som du skal lave redirects på. De formler opretter du i de næste kolonner og kopierer til samtlige celler i hver kolonne.
Formlen kan f.eks. se ud som følger:
=LOPSLAG($A2;Links!$A$2:$A$250;1;FALSK)
(Formlen her tjekker om URL’en i celle A2 også findes i Kolonne A i fanebladet Links og giver en fejlmeddelelse, hvis det ikke er tilfældet – og et resultat, hvis den findes. Det er vigtigt at angive FALSK til sidst i formlen, da Excel ellers vil melde ud, bare URL’erne minder nok om hinanden.)
Brug herefter “Brugerdefineret Sortering”-funktionen til at få sorteret det hele efter, hvorvidt dine URL’er forefindes i de andre faneblade. (Sortér efter alle de tre kolonner i rækkefølge – og se videoen for et eksempel). Hermed får du vist øverst på skærmen alle de URL’er, der er dine højst prioriterede.
Nu har du altså på din skærm en arbejdsliste over de URL’er, der skal redirectes.
Og lød det så lige teknisk nok, så har jeg produceret et kort screencast til at give bare et kort glimt af, hvordan det kan se ud i praksis (Det ses nok bedst i fuldskærm, hvis du vil have detaljerne med):
Og så til den manuelle del
Når du er kommet her til, kan det meget vel være slut med automatikken. Nu skal du nemlig for hver eneste af disse URL’er finde den URL i den nye sitestruktur, der matcher bedst. Og så skrive/indsætte URL’en i kolonnen ved siden af. Det kan være både hårdt og kedeligt, men trøst dig med, at du i det mindste har prioriteret dit arbejde.
Er du så heldig, at du primært skal ændre på nogle mekaniske ting (.html til .php eller lign, så kan du nemt og hurtigt klare den del med en simpel erstat-funktion i Excel. Kopier den gamle URL over i den nye URL-kolonne og erstat .html med .php – og vupti, så er den klaret). Men var det så simpelt, havde vi ikke behøvet at kaste os ud i alt dette i første omgang. Men hav i hvert fald denne simple metode i tankerne, hvis du f.eks. skal ændre mange URL’er i stil med ditgamledomæne/produkter/fin-havenisse.html til nytdomæne/fin-havenisse.php. Der kan du med fordel bruge en stribe erstat-kørsler til at skifte den ene og anden komponent i adresserne.
Når du er færdig med at udfylde de nye URL’er, kan du med fordel rydde op i Excel-arket (efter at have gemt under et nyt filnavn, naturligvis), så du kun har to kolonner tilbage. A-kolonnen med de gamle URL’er og B-kolonnen med de nye URL’er. Dette regneark kan du så sende til din webmaster og bede ham om at sætte 301 redirects op, som det nu engang gøres bedst på dit website.
Muligheder for mere automatisering?
Jep, der er muligheder for endnu mere automatisering. Både i noget af Excel-arbejdet undervejs, hvor der findes mere elegante metoder til det meste, og i noget af det efterfølgende 301-arbejde.
Skal du f.eks. redirecte ved hjælp af en .htaccess-fil og bruge input til filen i formatet:
redirect 301 /old/old.htm http://www.you.com/new.htm
Så kan du hurtigt trylle dine to URL’er fra kolonne A & B om til en samlet streng i dette format. Her bruger du bare MIDT-funktionen til at skære dine gamle URL’er til, så de lever op til formatet /old/old.htm – og efter følgende samler du de to kolonner til en streng med Sammenkædning/Concatenate-funktionen.
Formlen kan ende med at se sådan ud, hvor 25 er det antal tegn som skal væk fra den gamle URL for at få det rigtige format.
=SAMMENKÆDNING(“redirect 301 “;MIDT(A2;25;200);” “;B2)
Outputtet fra den formel indsat i kolonne C kan herefter indsættes direkte i en .htaccess-fil og håndtere alle dine 301 redirects, hvis det er den mest optimale metode.
Eller hvis du er i en situation, hvor langt størstedelen af dit site forbliver helt uændret. Så kan du f.eks. crawle både dit gamle og udviklingsversionen af dit nye site med Xenu og eksportere data i den version, hvor sidetitlerne kommer med – og bruge Lopslag til at kombinere URL’erne på baggrund af matchende sidetitler. (Kræver selvfølgelig helt unikke sidetitler).
Afsluttende kommentarer om 301 redirects
Lad mig lige slå det fast endnu engang. Det er altså bedst, hvis du kan redirecte så meget som overhovedet muligt. Og hvis der på nogen måde er et mønster i ændringerne på dine URL’er, så kan det også automatiseres i så høj grad, at det bliver overkommeligt. I ikke så få tilfælde er det også noget, som et godt webbureau kan håndtere for dig med dedikerede værktøjer af den ene eller anden art.
Men jeg ved også fra virkelighedens verden, at den manuelle metode nogle gange bare kan være en nødvendighed, hvis en sideejer skal komme videre. Og så kan Excel være en rigtigt god hjælper, og gøre det bare lidt mindre manuelt og lidt mere overskueligt.
God fornøjelse med dine 301 redirects.
Rigtig godt eksempel på, hvor praktisk Excel er til alt muligt.
Måske du skal understrege med fed og store typer, at “nuværende” URL-struktur i afsnittet “Saml rådata ind først” er det gamle site. Hvis man har skiftet URL-struktur, så bliver det pludselig noget mere kedeligt.
Rigtig godt tip at hente de vigtigste sider fra Google Analytics. Ellers kan der være en tendens til, at man bruger for meget krudt på produktsider for varer eller andre sider, som man (og de besøgende) havde glemt fandtes. 🙂
Når man har været i luften med den nye struktur i nogle måneder, er det også en rigtig god idé at tage fat i Webmaster Tools igen for at samle op på indgående links, hvor målsiden ikke længere findes. De kan komme dryssende i lang tid efter skiftet, og der kan være rigtig god gevinst ved at få dem alle med.
Tak for kommentaren Johnny.
Jeg har tilføjet en linie mere, om at man skal i gang, før det nye site går i luften.
Og ja, det er en rigtig god idé at følge med på bagkant også og få udvidet 301’erne til at fange, hvad der evt. måtte være tabt på gulvet alligevel.
Hej Frank,
Mange tak for denne lærerige gennemgang af hvordan man håndter mange 301 redirects :o)
Jeg er netop i gang med at lave min gamle Frontpage side om til WordPress, så du har lige sparet mig for en masse tid og også gjort mig klogere på hvordan jeg prioritere ved hjælp af Google Analytics.
Hej Therese,
Det glæder mig, at en læser allerede har haft gavn af indlægget. 🙂
Endnu en god grund til at følge dig på Twitter, Frank. Tak for guiden og det konkrete bud på hvordan processen kan automatiseres.
En blog post, hvor både Xenu, Google Analytics OG Excel bliver brugt, det kan kun være godt 😀
Jeg kan bekræfte teknikkerne, har brugt dem selv et par gange. Normalt er de i mit arsenal af hemmelige ninja-tricks, så tuuuuusind tak for at gøre dem offentlige nu 😛
Hvis kunden allerede HAR lanceret hjemmesiden, og ikke lige fået fyret Xenu af på den gamle, og heller ikke lige kører med Webmaster Tools, så har jeg tit benyttet tricket med, at hive en landing page rapport ud for al referal trafik. Det giver en god, prioriteret oversigt over hvilke sider, det er vigtigt at have en redirect på. Og så længe den gamle hjemmeside kørte med Google Analytics, så kan man gøre det bagud i tid.
@ Frank
Super god post! Og meget interessant det med at sortere og kun redirecte de vigtigste.
Brugte også excel da jeg skiftede platform fra Dandomain til Magento med e-scarf. Det er MEGET lettere at håndtere så mange redirects (omkring 500) i et excelark.
@Søren
Godt ninja trick den med at hive sider ud fra analytics, hvis alt andet er fejlet 🙂
@Kristian,
Tak for rosen.
@Søren,
Excel i sig selv er næsten altid godt – men i en cocktail med Xenu og Analytics smager det endnu bedre. 🙂
Og ja, god idé at trække sider ud med besøgende fra referrals. Det kan også i en snæver vending bruges som proxy for sider med indgående links. (I hvert fald den naturlige af slagsen…)
@Nikolaj,
Tak for rosen. Som udgangspunkt bør man gøre som dig, bide tænderne sammen og redirecte alt. Men nogle sites kan jo blive grufuldt store, og der kan en prioritering hjælpe til at gøre arbejdet mere overkommeligt.
Wow!
Der sparede du lige mig for en masse spildtid i fremtiden.
Mange tak for at dele dette tricks med os andre!
🙂
Når du sorterer, og dermed undlader nogle URLs, er det så ik en god ide, at redirecte disse løbende? Altså det kunne være, at nogen havde linket til en side, men dette ik var fundet af Google eller Sitexploration endnu. Hvis andre så linker til denne side efterfølgende, så går man jo glip af et godt link…
Rigtig godt beskrevet. Denne artikel kunne jeg godt have brugt for 3 uger siden :).
Hvad nu hvis Google har nogle sider i sit indeks eller der er links til url’s som du ikke har fået med. Er det så ikke klogt at lave en ( catch all løsning? ).
Så de urls du ikke har i din liste bliver 301 til forsiden i stedet for at give en 404?
Smart tip til hurtigt at få et overblik 🙂
Bare ærgerligt med MAC det ikke virker 🙁
@Morten,
Jo, det er en god idé, hvis man kan tage sig af alle siderne. Og som Steen er inde på, er det også en fin idé at lave en catch-all løsning til resten, hvis man kan det.
@Sebastian,
Ja, man træffer nogle valg – og når man køber Mac, vælger man Xenu og ordentlig Excel-brug fra. (Dog findes der Mac-programmer, der kan noget af det samme som Xenu, har jeg set).
Når man er mac-bruger er det nogle gang godt med Windows i baghånden, specielt til SEO brug 🙂
301 redirects er vel også en stor fordel hvis produkter udgår, eller der kommer en opdatering. Så man kan få lidt værdi fra det gamle produkt til det nye? I stedet for bare at klikke delete.
@Jesper,
Jo, det er vigtigt at gøre op med sig selv, hvordan man bedst håndterer skiftende produkter i sin shop. Som oftest vil det være bedst at kunne 301’e til det produkt, der afløser det gamle – eller i det mindste til kategorien. (Forudsat at produktet ikke kommer tilbage igen. Eller det tiltrækker så mange besøgende fra søgninger, at det er optimalt at lade det blive og skrive, at det er udgået og man kan købe afløseren herovre).
Hej Frank
Super god og grundig gennemgang af hvordan en ret triviel ting kan semi automatiseres. XENU er et fantastisk værktøj og tror næppe man kan lave SEO uden excel.. Som @Søren skriver så er analytics rigtig godt hvis kunden har launchet når de ringer. Desværre noget vi ser lidt for ofte 😉
Lækker gennemgang. Vidste slet ikke det kunne gøres så smart
HejFrank
Det er jo altid skønt at se ting automatiseret i Excel – jeg har jo altid pladeret for at det vigtigste SEO værktøj er Excel. Jeg bruger ihvertfald excel dagligt til mange ting i forbindelse med SEO.
Genialt du offentliggør det – og skal der laves en spændende skabelon med mere avancerede ting i – så lad mig det vide, det kan jo være jeg har noget liggende der kan bruges 🙂
Hej Frank.
Rigitg god gennemgang af 301 redirects.
Jeg vil lige slå et slag for at alle der flytter deres site til en WordPress installation, skal ta et kig på plugin’et “Redirection”.
Den giver dig en komplet liste over 404 fejl dine besøgende støder på, og du kan med få klik lave en 301 redirect til den rigtige URL.
Hej Frank,
Tak for en super gennemgang af 301 redirect.
Jeg har for nylig lavet 301 redirect af en hel side til en anden. Jeg valgte den nemme løsning at redirecte alle siderne til forsiden af den nye side/URL. Siderne har ikke samme emne, derfor mente jeg at det var en okay måde at gøre det på.
Nu er jeg så løbet ind i det problem, at den nye sides titel, URL og beskrivelse er blevet “overskrevet” af den gamles titel, URL og beskrivelse? Før jeg lavede 301 redirecten var den nye side allerede indekseret, med korrekt titel, URL og beskrivelse.
Siden har haft de forkerte oplysninger omkring en måneds tid nu – og Googlebot har været forbi siden flere gange.
Jeg er klar over at dette bevæger sig lidt uden for emnet for dette indlæg – men det handler dog stadig om 301 redirects. Håber du har et godt svar 🙂
mvh.
Tobias Bay
Hej Tobias,
Først troede jeg, at du var rendt ind i en variant af http://densynligemand.dk/ikke-min-sidetitel/, hvor Google godt kan finde på at lade indgående links påvirke sidetitlen.
Men så læste jeg dit skriv igen, og du skriver, at sågar din URL er ændret i søgeresultaterne? Det lyder meget mærkeligt. Jeg tror, at der skal et domænenavn på bordet, hvis det skal være noget, jeg eller nogle af læserne skal kunne grave et godt svar frem på.
Hej Frank,
Der er tale om Forbrugslaan.nu. Prøv at søg på “forbrugslån” på Google. På side 2 eller 3 (springer lidt frem og tilbage for tiden) finder du en side der har URL’en: Foto-forum.dk og beskrivelsen for foto forummet.
Nu er den godt nok begyndt at have den rigtige titel, så det kan være det begynder at gå i den rigtige retning? Jeg har aldrig været ude for noget lign. og har ikke kunne finde nogen info om emnet? Håber du eller andre herinde kan hjælpe 🙂
Tobias,
Du har lavet en 302 redirect fra foto-forum til forbrugslaan – og i sjældne tilfælde kan en 302’er være skyld i den slags ballade, som vi ser her. Få den lavet om til en 301’er, så vil alting straks blive bedre.
Jeg syntes godt nok jeg havde vendt hver en sten. Det hjælper altid at få friske øjne på noget man er kørt fast i.
Tusind tak – tænk at det var så enkelt 🙂
Hej Frank
Det er nogle rigtige gode tips, som du har samlet her. – Jeg er helt sikker på de vil/har hjulpet mange med at få et overblik. – Det kan jo være ret svært, hvis man skal lave en masse 301 redirects.
Rigtig god gennemgang med 301.
Den tager godt udgangspunkt i to-do listen inden man ryger over på ny URL struktur.
Et godt tip til næste emne kunne være når man netop ER kommet på røven og skal til at have opsamlet stumperne efter at være overgået til ny URL Struktur og nu står med en god spandfuld 404. Det er jo desværre realiteten for flertallet, da de fleste kunder først ønsker 301 når det egentligt går op for dem at det ikke var et lusket mersalg man forsøgte at lave i starten, men nu pludselig ser straffen for ikke at ville smide de ekstra småbeløb i at få lavet det ordentligt fra starten.
så mon ikke der vil være mange “gør-det-selv” typer der vil nyde godt af en sådan gennemgang 🙂
Super guide men et kanon løsnings forslag.
Mange tak lige hvad jeg stod og manglede.
Har en samarbejdspartner der lige præcist manglede dette til en overgang fra et CMS til et andet. ;o)
Hej Steffen,
Se Søren Sprogøs tip længere oppe i kommentarsporet. Han er inde på en måde at opfange de gamle URL’er på. Alternativt kan man scrape søgeresultaterne fra Google og se, hvad de har indekseret.
@Thomas,
Det glæder mig, at I kunne få gavn af min lille guide.
Hei Frank
Har gået og tenkt på hvordan dette kunne gøres enklere – fantastisk gennemgang. Den vil jeg teste på neste redesign.
Jeg kan jo supplere simons innspill med at der i TYPO3 CMS også er en rimelig enkel måde at håndtere redirects på når først sitet er lanceret, med en liste over 404 fejl, og umiddelbart mulighed for at lave 301 redirect til den rigtige URL (akkurat som i redirect pluginen hos wordpress.)
Beklager sproget ovenfor – jeg startede med at prøve på dansk, men glemte det et par steder;-)
@Nickolass,
Det er helt ok med sproget. Jeg både læser og forstår de nordiske sprog. 🙂
Og ja, redirects kan håndteres rigtig fornuftigt i flere CMS’er og nogle webbureauer har også udviklet rigtigt gode værktøjer til formålet, der fungerer bedre end ovenstående gør-det-selv-løsning. Men det er ikke alle.
Kanon artikel du har lavet her Frank.
Det har ihvertfald hjulpet mig med at få et godt overblik over 301 redirects. Keep up the good work 🙂
Tak for at lægge sådan en tjekliste ud offentligt, det er rigtig god karma og god stil 🙂
@Søren
Du kan ikke holde på alle dine hemmeligheder i al evighed, vi holder øje med dig.
Tak for et rigtig godt indlæg! Det var en stor hjælp. Jeg har dog et spørgsmål af teknisk karakter, for jeg er ikke super skrap til apache.
Lad os sige, jeg har valgt at prioritere ud fra den proces du skitserer. Jeg har f.eks. valgt at lave hundrede 301’er fra den gamle hjemmeside, mens resten får så lidt trafik at det ikke kan svare sig.
Hvordan smider jeg så en catch all på .htaccess’en, som flytter resten af url-hittene over på den nye sides landingsside, men stadig respekterer de 301’er jeg manuelt har oprettet? Jeg har prøvet mig frem, men desværre uden held.
Lige nu ser min htaccess sådan ud:
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.bareeteksempel.dk/$1 [r=301,L]
Redirect 301 /tyggegummi.html http://www.bareeteksempel.dk/guf/slik/chewgum.html
og så ca hundrede andre 301’ere i samme stil, som ikke kan automatiseres. That’s it. Kan du lokkes til at kaste lidt 301-crazy-ninja-skills min vej? =)