Hoppa till innehåll
ArchiLinks
ArchiLinksSkapa konto

Rekord för omdirigeringar: rangordna gamla URL:er efter de länkar de innehåller

Ett omdirigeringsrekord är en prioriteringslista, inte ett kalkylark med alla URL:er. Börja med de sidor som andra webbplatser länkar till, så blir resten av rekordet enklare.

ArchiLinks forskningsgrupp ·

Arbetare som sorterar värdefulla guldstenar från grå stenar på en verkstadsbänk

Varför rangordna efter länkar

Team bygger ofta rekord från en crawlning. Det är komplett. Det behandlar också en glömd pressartikel från 2014 som startsidan.

När du kontrollerar backlinks till din webbplats och sorterar sidorna efter antal länkande domäner, visar sig ett mönster vid de flesta migrationer: ett dussintal URL:er håller för det mesta av det externa värdet. Dessa URL:er matchas manuellt, granskas två gånger och testas först.

Allt annat följer regler. Mappar mappar efter mönster, parametrar tas bort, och ensamma URL:er utan länkar eller trafik kan returnera 410 om du bestämmer så. Kombinera utdata med checklistan för migration så att rekordet testas innan lansering och kontrolleras igen på dag 45, samt med API-skripten för att schemalägga det månatliga hämtandet.

Steg 1: hämta de länkade sidorna

Ett anrop returnerar upp till 1 000 rader och kostar 2 krediter, oavsett antal rader. Fältnamnen nedan är ett exempel; titta på ett riktigt svar och justera nycklarna.

python
import csv, requests

BASE = "https://archilinks.com/api.php"
KEY = "sk_live_..."

def call(action, **params):
    r = requests.get(BASE, params={"action": action, "key": KEY, **params}, timeout=30)
    r.raise_for_status()
    return r.json()

data = call("toppages", q="old-shop.com", per=1000)
rows = next(v for v in data.values() if isinstance(v, list))

with open("linked-pages.csv", "w", newline="") as f:
    w = csv.writer(f)
    w.writerow(["old_url", "links", "new_url"])
    for row in rows:
        w.writerow([row.get("url"), row.get("backlinks"), ""])

Steg 2: fyll i den tredje kolumnen

01

Matcha efter betydelse

En produktsida går till samma produkt, eller till dess kategori om produkten är borta. Aldrig till startsidan om sidan inte var startsidan.

02

Låt en andra person kontrollera de topp 50

En trött person kl. 18:00 mappar en guide om canonicala URL:er till en bloggindex. En granskare fångar det.

03

Regler för den långa svansen

Skriv mönster för mappar och ta bort spårningsparametrar. Behåll varje regel i versionskontroll med en kommentar som förklarar varför.

Steg 3: generera serverregler

nginx läser en mappfil bra, och den skalar till tiotusentals rader.

nginx
# /etc/nginx/redirects.map  (generated from the csv)
/old/guide-canonicals    /guides/canonical-tags;
/products/blue-widget    /shop/widgets/blue;

# in nginx.conf, http context
map $request_uri $new_uri {
    default "";
    include /etc/nginx/redirects.map;
}

# in the server block of the old host
if ($new_uri) {
    return 301 https://new-shop.com$new_uri;
}
Metallspak som låser en stenblock i en brostruktur

Steg 4: testa varje hopp

Misslyckas pipeline:n vid något som inte är ett enkelt 301-hopp till en 200.

bash
while IFS=, read -r old new; do
  out=$(curl -s -o /dev/null -w "%{http_code} %{num_redirects} %{url_effective}" -L "https://old-shop.com$old")
  echo "$old -> $out"
done < redirect-pairs.csv | grep -v "^.* -> 200 1 " && echo "FIX ABOVE"

Fel vi skulle kontrollera först

SymtomTrolig orsakÅtgärd
Kedjor med två eller tre hoppGamla regler staplade på nyaPeka den gamla regeln rakt mot den slutgiltiga URL:en
Allt landar på startsidanLat catch-all-regelMatcha efter ämne; Google kan behandla massiva omdirigeringar till startsidan som mjuka 404-fel
Frågestringar förlorasRegeln släpper argumentenBehåll parametrarna som ändrar innehåll; ta bort resten
Topp-URL:en returnerar 404 efter lanseringLämnades ut ur CSV-filenKör hämtningen igen och diff:a mot det levande rekordet
Trädgårdsmästare som klipper en komplex buske medan en slang vattnar ett enkelt fält

Vilka URL:er förtjänar en manuellt matchad rad

Inte varje URL förtjänar en person. En användbar uppdelning är efter länkande domäner: varje URL med flera externa sidor som pekar på den matchas manuellt, och resten följer en uppsättning regler. Säg att du har 4 000 gamla URL:er och att 60 av dem håller för det mesta av de externa länkarna. Dessa sextio tar en eftermiddag av granskning, medan de andra 3 940 tar ett mönster och ett test.

Håll tröskelvärdet i skriptet, inte i någons huvud. Fem länkande domäner är en rimlig start för en medelstor webbplats. Börja där. Sänk talet när hela webbplatsen har få länkar, och höj det när den manuella listan blir för lång för en granskare.

Att hålla manuellt matchade och regelmatchade rader åtskilda

Manuellt matchade rader får en namngiven granskare och en anteckning om varför målet valdes. Regelmatchade rader får ett mönster testat mot hela mappen, så att ett undantag syns i testrapporten innan lansering snarare än i en trafikdiagram efteråt.

Blandade fall orsakar mest förvirring. En produkt som tagits ur sortimentet och ersatts av en efterträdare mappas till efterträdaren. En produkt som tagits ur sortimentet utan efterträdare tillhör sin kategori, aldrig startsidan.

Att använda ett andra hämtning för att se vad som flyttats

Kör refdomains för den gamla värden innan rekordet är slutgiltigt, kör sedan igen efter lansering, och matcha de två listorna efter domän. En länkande domän som saknas i det andra hämtningen är en fråga för länkinnehavaren, inte en anledning till oro, eftersom en borttagen länk kan ta lite tid att visa i indexet.

Behåll båda filerna sida vid sida i migrationsmappen, med datumet i varje namn. Diff:en berättar var du ska titta, och rekordet berättar vad du gjorde åt det.

Att bestämma vad man ska göra med URL:er som inte har några länkar

Ensamma URL:er utan länkar och utan trafik är det lätta partiet. Returnera ett tydligt 404 eller ett 410 när innehållet är borta för alltid, och omdirigera bara när en nära ersättning finns, så att besökare och crawlar båda landar någonstans användbart.

När du är osäker, lämna en kort anteckning i rekordet och kom tillbaka efter den första veckan av loggar. Din serverlogg visar vilka gamla adresser som fortfarande får förfrågningar, vilket är det bästa beviset du kommer att ha.

Hur rekordet passar in i en lansering

Ett omdirigeringsrekord ändras med webbplatsen. Ha det i åtanke. Nya sidor dyker upp, gamla döps om, och en malländring kan bryta en regel som såg säker ut förra månaden. Behandla rekordet som kod, med en fil i versionskontroll, en granskning innan varje deployment och ett körningstest vid varje ändring.

Håll rekordet i ett lager så långt det är möjligt. Omdirigeringar som sprids över applikationen, CDN:et och CMS:et är hur kedjor uppstår, och kedjor är svåra att upptäcka utan en fullständig crawlning.

Var reglerna bör bo

En servermapp är snabb och enkel att testa. Ett CMS-plugin är smidigt för ett fåtal sidor, men det är svårt att granska i stor skala. Vilket du än väljer, etthopstestet måste läsa från samma plats.

Om två lager omdirigerar samma URL rapporterar testet en kedja. Ta bort duplicaten från det lager du planerar att fasas ut.

Testa på den verkliga värden efter varje ändring

Kör hopp-testet på staging, sedan på production, efter varje ändring i regelfilen. En regel som klarar staging kan fortfarande misslyckas när en cache håller ett gammalt svar, så den andra körningen är viktig.

Spara utdata med datumet. När en topp-URL går sönder månader senare visar det gamla resultatet om regeln ändrades eller om webbplatsen gjorde det. Checklistan för migration listar när det testet hör hemma, och att köra det först gör nästa kontroll jämförbar med denna.

Att granska en ändring i regelfilen

Namnge en granskare för ändringar i rekordet, och be den personen att kontrollera tre saker: huruvida varje mål fortfarande matchar ämnet, hur många hopp regeln skapar, och huruvida mönstret är tillräckligt smalt för att bara påverka de URL:er det skrevs för. En ändring som ingen granskade är den som mest sannolikt startar en kedja.

Be om samma granskning när webbplatsen själv ändras. En ny kategori som absorberar en gammal mapp kan få en korrekt regel att peka på fel ställe utan att någon redigerar rekordet.

Lagra granskarens anteckning bredvid ändringen. Sex månader senare förklarar anteckningen en regel som annars ser godtycklig ut, och den räddar en andra undersökning av samma fråga.

Att testa ett urval innan hela körningen

Innan du kör hela listan, välj ett urval på femtio rader som blandar de topp-länkade sidorna med några vanliga. Kör hopp-testet på det urvalet först. Urvalet är snabbt att läsa, och ett fel i regeln syns i det långt innan det syns i hela filen.

Inkludera minst en rad från varje regelmönster, och en från varje manuellt matchat grupp. Ett mönster som täcker en mapp med två hundra URL:er testas bara av de rader som händelsevis finns i urvalet, så välj dem med avsikt.

Att hålla regelfiler små

En regelfil som växer bortom ett par hundra mönster blir svår att granska. Dela den efter webbplatssektioner, och håll varje fil kort nog att en granskare kan läsa den på ett pass.

Ta bort en regel den dag dess mapp försvinner. Gamla regler som lämnas kvar är de som senare skickar trafik in i en kedja.

Innan rekordet går live

  • Varje rad har en ny URL, eller en avsiktlig 404 eller 410.
  • Inget mål är i sig en omdirigering.
  • De 50 URL:erna med flest länkande domäner granskades av en andra person.
  • Frågeparametrar som ändrar innehåll tas med.
  • Regelfilen är i versionskontroll, med en kommentar på varje mönster.
  • En baslinje för hänvisande domäner sparas för diff:en efter lansering.

Omdirigeringsfrågor som kommer tillbaka

Ska jag ta bort de gamla omdirigeringarna efter ett år?
Många migrationsteam behåller dem i minst ett år. Därefter, behåll dem så länge gamla URL:er fortfarande får externa länkar eller trafik. Omdirigeringar kostar nästan inget att servera, så det finns sällan en bra anledning att ta bort dem i förtid.
Är det okej att bara omdirigera de indexerade sidorna?
Inte om de icke-indexerade innehåller länkar. Indexstatus säger lite om externt värde. Omdirigera varje URL som har en länkande domän, och bestäm sedan om resten efter trafik.
Vad gäller 302 eller 307 för en permanent flytt?
Använd 301 eller 308 för permanenta flyttar. En 302 som lämnas kvar i flera år kan behandlas som en permanent, men det utfallet lämnas åt slumpen, och andra klienter av omdirigeringen kanske inte gissar på samma sätt.
Kan jag omdirigera 404-fel från den gamla webbplatsen till den nya?
Bara när en nära matchning finns. En omdirigering till en relaterad sida är ett mjukt 404-fel i Googles ögon. Returnera ett riktigt 404 eller 410 när innehållet är borta.