Permanenta länkar – vad är det?

I en debatt på mindpark.se stångades jag en stund med Joakim Jardenberg om vikten av absolut permanenta länkar på webben. Jag uttryckte min oro för att Jardenberg är på marsch mot ett förstelnande Internet och att göra ett stilleben av webben, eftersom han förespråkar att en länk är en länk är en länk, och absolut aldrig får brytas.

Jag förstår mycket väl vad han menar, det är tråkigt att bryta inlänkar och indexering i Google och andra sökmotorer, men jag är av uppfattningen att webben likt Internet i stort är under ständig förändring, och att vi inte kan bli för nostalgiska vad gäller en teknik eller något innehåll på webben. Och självklart förstår jag det positiva i att länkar inte bryts, men jag tycker helt enkelt att det finns många tillfällen då nackdelarna väger tyngre än fördelarna.

Nå – Jocke gick till så hårt angrepp att jag la några minuter på att slå hål på hans teorier genom att hitta trasiga länkar på en sajt han själv ansvarat för: hd.se. Lättare sagt än gjort skulle det visa sig, för man har verkligen ansträngt sig till det yttersta för att bevara gamla länkar.

Jag hittade till exempel följande länk genom att söka på Google: En artikel från Elöverkänsligas Riksförbund från 2004. Här länkas en artikel på hd.se som handlar om att Båstad sagt nej till nya 3G-master. Länken är som följer: http://hd.se/ArticlePages/200409/28/20040928161250_-Alla_anvandare-191/20040928161250_-Alla_anvandare-191.dbp.shtml

Ouch. Inte världens snyggaste URL direkt, men så ser den ut. Jag tänkte att jag hade hittat guldkornet jag letade efter, men blev snopen när länken faktiskt fungerade, och dessutom ledde rätt: http://hd.se/bastad/2004/09/28/baastad_saeger_nej_till_nya_3g/

Här har man ju uppenbarligen lyckats med att behålla en gammal inlänk så att den funkar, och leder till den nya länken. Imponerande! Finemang! Alla är glada. Eller? Jag kan inte låta bli att fundera lite på hur man gått tillväga. Den gamla URL:en innehåller datum för artikeln (20040928) och vad som gissningsvis är ett internt ID för artikeln från det CMS man använde 2004 (161250). Den nya URL:en innehåller inget ID alls, utan använder en modern permalinkstruktur där titeln från artikeln blir identifikationen (baastad_saeger_nej_till_nya_3g), så hur görs kopplingen från den gamla URL:en till den nya?

Här får jag gissa. HD kanske använder samma CMS nu som 2004, och i såna fall har artikelns ID troligen inte ändrats sen dess, och det är lätt att göra ett nytt fält i datbasen för “snyggare URL:er”. Men desto troligare är att HD har bytt CMS sedan 2004, och då kan man ha gjort på två olika sätt:

1) Man kan ha behållit alla ID-nummer från det gamla CMS-systemet när man importerade innehållet till det nya.

Det är ofta komplicerat, och en vanligare lösning är att man istället

2) häller in gamla ID i ett separat fält för detta (oldID, anyone?) för att bibehålla kopplingen.

Har man valt lösning (1) är det hatten av och bara att köra på. Det är väldigt lätt att göra en “rewrite” på gamla URL:er till nya i det fallet. Har man istället använd lösning (2) börjar jag få rätt i min argumentation på mindpark.se. För hur många generationer av gamla system ska man egentligen underhålla innan det blir löjligt? Visst, en generation kan man utan större problem underhålla för att ha permanenta länkar, men nästa gång man byter CMS, blir det ytterligare en generation av ID att hålla ordning på då? Och nästa gång, och nästa gång…

Min princip ligger fast – det ?R inte alltid försvarbart att till varje pris behålla länkstrukturer när man gör ett större systembyte. Det är lovvärt om det går att göra, och det finns ju inga nackdelar med att göra det om det är enkelt. Men om det är svårt, om det kräver att man hackar speciallösningar, och om det på sikt ändå är ohållbart – var går gränsen?

Och det som jag ser som det större problemet i den här frågan – ska vi verkligen betrakta webben som permanent? Kan vi inte acceptera att länkar bryts då och då? Finns det inte en ganska stor risk att vi på sikt hamnar i en okontrollerbar härva av föråldrade länkar som ska underhållas i all evighet?

/M;

11 thoughts on “Permanenta länkar – vad är det?”

  1. Tack Magnus, bra sammanfattning.

    Jag vet inte heller riktigt varför debatten blev så aggressiv. Jag försöker (nästan) alltid hålla mig sansad, men jag har varit på Jocke förut om det här med ett “permanentande” av webben, så han kanske kände sig lite trängd.

    /M;

  2. Eller så kan man 3) vid bytet av CMS gjort en statisk tabell/mappning mellan gamla och nya ID:n, och sen låtit mod_rewrite sköta hänvisandet, helt utan att det nya CMS:et behöver känna till något. Det är en lösning som är ganska enkel, och framförallt inte behöver underhållas när man byter från CMS #2 till CMS #3 till CMS #4 (Såhär har jag hanterat byte av ett antal bloggmotorer genom tiderna: http://blog.tomtebo.org/2007/08/07/svart-balte-i-mod_rewrite/).

    I debatten görs dock ett antagande som inte stämmer – att vilket CMS man använder skulle ha något kontrollerande inflytande på hur ens URL:er ser ut. Jag tycker snarare att URL-designen är en del av webbplatsdesignen, och om man lägger arbetsdagar på att pilla in varenda pixel på rätt plats bör man också ta en stund och fundera på hur URL:erna ska se ut, så man inte behöver ändra dem för något så trivialt som ett CMS-byte.

    Tim Berners-Lee skrev om det här för över tio år sedan: http://www.w3.org/Provider/Style/URI

  3. Hej Staffan, jag tittade på din post om ämnet, och du bekräftar bara det jag skriver, att ett av alternativen är att behålla gamla ID/GUID för att bibehålla kopplingen, vilket jag kallar för alternativ 2 ovan.

    Hur man väljer att lösa tekniken är ju oviktigt, det viktiga är att du håller gamla länkar uppdaterade. Jag såg att du håller fast vid ett motto om att du ska underhålla dina länkar tills universum imploderar. :)

    Det ENDA jag har sagt är att det inte alltid är självklart att det är den bästa lösningen. Och att man genom att förutsätta att innehåll kommer att finnas kvar på en viss adress för alltid är att gör antaganden som går emot webbens natur.

    SJ?LVKLART är det viktigt att upprätthålla länkar när man har viktig information som måste vara lätt att hitta. Men man kanske ska fundera på det från fall till fall?

    Vad händer t.ex. när innehållet på en sida ändras men den gamla länken fungerar? Då kan länkens kontext ändå förändras, och då är den gamla länken kanske värdelös?

    Det här händer ST?NDIGT på Google när du googlar på ett ämne, får en träff på en WordPress-blogg och länken leder till en kategoriöversikt där innehållet tydligen fanns när Google gjorde indexeringen, men inte längre, eftersom det nu hamnat på en annan sida.

    Det jag försöker säga är att vi kan ?ND? inte göra några absoluta antaganden om vad vi kommer att hitta “på andra sidan länken” och att det inte är säkert att det finns något att vinna med att underhålla en föråldrad länkstruktur.

    Det är stor skillnad på att behålla gamla länkar under en övergångsperiod när man gör om en sajt för att leda folk rätt eller för att inlänkar ska fungera, och på att försöka skapa en statisk webb. Det första är en god sak, och det andra är en ond sak, i mina ögon.

    /M;

  4. Vi är inne på fjärde databasbaserade CMS:et nu (egenutvecklat 2001-2004, Bombus Headline 2003-2005, egenutvecklat 2005-2009, Escenic 2009-) och vi har ansträngt oss för att se till att gamla artikellänkar fortfarande ska fungera.

    Vi varje övergång så har vi importerat tidigare artiklar från gamla CMS:et till det nya. Samtidigt så har vi sett till att det funnits fält som gjort att vi kunnat identifiera ursprungskällorna (system och system ID) på artiklarna.

    Eftersom vi också har haft koll på strukturen på de tidigare URLerna så har det varit en smal sak att, med hjälp av Apache’s mod_rewrite, se till att fånga upp anrop för de gamla URLerna och skicka in dem i en snurra som hittar artikeln i fråga, och sedan styr över webbläsaren/sökmotorn till rätt adress med en HTTP 301 “Moved Permanently” redirect.

    Det gör att man kan gå till http://sv.wikipedia.org/wiki/Sveriges_pensionärers_intresseparti och hitta en länk till http://www.hd.se/senastenytt/detalj.shtml?id=17583 (vårt första CMS) och sedan landa på http://hd.se/inrikes/2004/07/06/sverigedemokrater-medlemmar-i-spi/ (servas av vårt senaste CMS).

    Vi gör inte det här för sökmotorernas och våra egna internlänkars skull. Sökmotorerna hittar vårt material igen och innehållet på vår egen sajt kan vi själva göra något åt.

    I fallet med Wikiedia-länken kan vem som helst gå in och rätta till länken. Värre är det med länkar i foruminlägg, PDF:er eller gamla webbsajter som inte längre uppdateras. Poängen är att länk-URLerna unikt identifierar en nyhet, recension eller annat som någon tyckt varit intressant och/eller relevant i texten där den finns. Webbplatsen där länken finns har vi ingen kontroll över och därför är det vår skyldighet att se till att länkarna fortfarande fungerar, oavsett vilken teknisk plattform vi för tillfället använder.

    Det där är väl en bra anledning till att bry sig om länkarna fortfarande fungerar?
    Frågan är inte om vi kommer byta CMS igen, frågan är när.

    Det är alltså inte frågan om någon slags övergångsstrategi.
    Permanent link is permanent. Don’t break the internet.

    ..och när vi ändå pratar URLer; vi tänkte till rejält kring vad en bra URL var för fem år sedan och försökte göra dem så meningsfulla som möjligt. På hd.se består URLarna därför bara av sektionsnamnet, datumet och en del av rubriken. Allt för att en klistrad länk ska bära information för mottagaren redan innan denne eventuellt klickar på den. Inklusive schema och hostnamn är de också kortare än 76 tecken för att inte brytas i mail vid citeringar.

    Vi fimpade irrelevant teknikskräp som CMS-beroende databas IDn och onödiga extensioner som .shtml, .php eller .ece som inte fyllde någon funktion. Tack vare detta så slapp vi problem med översättning av gamla IDn till nya. Artiklar publicerade med en URL i det gamla systemet har samma URL i det nya och inga omskrivningar behövs.

    Det enda som är trist är att moderna CMS (hej Escenic!), med undantag för WordPress (så klart), inte kommer med stöd för vettiga URL-strategier som standard. De envisas fortfarande med att ha teknikberoende ID:n och onödiga extensioner i URLarna.
    För vems skull, undrar jag?


    Noah Williamsson,
    Webbutvecklare, hd.se

  5. Hej Noah, och tack för din jätteintressanta kommentar. Det var ju precis det jag efterlyste, att få veta mer om hur ni gjort.

    Det är imponerande och duktigt på alla sätt, och som jag skrev i det här inlägget, väldigt intressant att se vilken strategi man väljer.

    Jag hör ju (föga förvånande vid det här laget) till dem som tycker att det finns tillfällen då det är försvarbart att bryta länkar. Det betyder ju inte att det är eftersträvansvärt, eller nåt bra, bara att jag har sett många tillfällen då det inte är ekonomiskt försvarbart eller ens nödvändigt att “spara” gamla länkar.

    Allt beror självklart på VILKEN sajt man arbetar med och HUR man kan spara det. I ert fall (hd.se) har ni säkert väldigt många inlänkar och då är ju självfallet incitamentet större att göra en övergång från ett URL-system till ett annat så smidigt som möjligt större.

    Jag lyfter på hatten för hur ni löst det, och hör gärna från fler webbutvecklare kring hur man resonerar i detta ämne.

    Sen håller jag helt och hållet med ditt sista stycke – det är vansinne att så många “moderna” system fortfarande har “fula” och framförallt “oföränderliga” URL:er.

    /M;

  6. Poängen är att en URL om den är välgjord inte skall referera till interna teknikaliteter som kommer ändras när man byter system. Att till exempel referera till en sida genom vilket internt id den har är skolexempel på att göra fel.

    Det finns fler anledningar till detta än permanenta länkar, URLer är till för att läsas av människor så väl som datorer. Naturligtvis fungerar ens publiceringssystem även om om man gör fel, på samma sätt som att det går att använda tabellbaserad layout fortfarande, men det ger vårtor i systemet som visar sig senare (när mobiler ersätter persondatorer eller när folk skickar länkar på något nytt sätt).

    Jag ser personligen inget fel i att bevara länkar i all evighet. Det ska inte innebära något merarbete att tala om.

    1. Visst, men hur gör du när du måste ändra strukturen på en webbplats av andra skäl, t.ex. när ett företag gör en övergripande organisationsförändring?

      Jag håller med om att det är dumt och onödigt att använda interna ID-nummer från ett CMS i URL:er, men även när man använder “mänskliga” URL:er blir det ofta ändringar. Hur länge ska en URL bevaras, oavsett om den inte längre är hierarkiskt korrekt?

      Säg att min företagssida ligger under /företag/marknad/måns – nu byter jag avdelning till teknik, och min nya sida hamnar därför på /företag/teknik/måns – det är ju en smal sak att göra en ompekning från /marknad/ till /teknik/ men det jag säger är att det efter ett tag kan bli V?LDIGT många och komplicerade ompekningssystem.

      Tänk dig att du har ett företag med 20.000 anställda där alla efter fem år kanske bytt avdelning ett par gånger*. Ska du då underhålla 40.000 inaktuella URL:er så är det ändå ett rätt stort arbete.

      (*) Exempel självklart extrapolerat och överdrivet, men ändå…

      /M;

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>