Teknisk SEO kräver planering
Teknisk SEO är inte ett paket man installerar i efterhand - den avgörs i arkitekturen. Tio punkter jag bygger varje Umbraco-lösning efter: canonical, hreflang, sitemaps, strukturerad data, statuskoder, prestanda och de fel jag oftast möter i befintliga lösningar.
Teknisk SEO avgörs i arkitekturen, inte i efterhand
Min bestämda uppfattning efter många år med Umbraco: teknisk SEO är inte något man "lägger till" med ett paket när sajten är klar. Den avgörs i hur lösningen byggs – i routing, i templates, i middleware och i vad CMS:et låter redaktörer göra. Det är därför två sajter på samma plattform kan prestera helt olika i sökresultaten.
Här är checklistan jag själv bygger efter. Den är skriven för Umbraco, men det mesta gäller vilken .NET-baserad webbplats som helst.
Checklistan
- Canonical på varje sida. Självrefererande canonical-länkar, alltid med samma protokoll och värdnamn som den publika sajten. Querysträngar och trailing slash-varianter ska peka mot en enda kanonisk URL.
- hreflang för alla språkvarianter. Kör ni svenska och engelska ska varje sida peka ut båda varianterna – med returlänkar. En hreflang-tagg utan motsvarande tagg på målsidan ignoreras av Google. I Umbraco genereras detta korrekt ur språkvarianterna, inte ur en handskriven lista.
- Dynamisk XML-sitemap. Genererad ur innehållsträdet vid varje anrop, aldrig en statisk fil. Sidor med noindex ska inte finnas i sitemapen – motstridiga signaler är värre än inga signaler.
- Dynamisk robots.txt med miljöskydd. Produktionsmiljön tillåter crawling, alla andra miljöer blockerar den. Jag har tagit över mer än en Umbraco-lösning där stagingmiljön låg fullt indexerad i Google bredvid produktionssajten.
- Strukturerad data i två lager. En sajtbred graf (Organization, WebSite, Person) som renderas från mastertemplaten, plus sidtypsspecifika noder per mall: BlogPosting på artiklar, Service på tjänstesidor, FAQPage där det finns riktiga frågor. Ett fält i CMS:et per sida för det sidspecifika, så att det versionshanteras med innehållet.
- Title och beskrivning som CMS-fält. Redaktören ska kunna styra title, meta description och og-varianter per sida och per språk – med vettiga fallbacks när fälten är tomma.
- Statuskoder som talar sanning. Borttagna sidor ska ge 301 till närmaste ersättare eller en riktig 404 – inte en 200-sida med texten "sidan finns inte". www- och https-redirect görs i middleware med en enda hopp, inte i kedjor.
- Prestanda som standardläge. Core Web Vitals ska vara gröna utan specialinsatser: webp-bilder med korrekta dimensioner, minifierade tillgångar och cache-headers med max-age=31536000 och immutable för statiska filer. Den här sajten mäter grönt på samtliga vitals – det är resultatet av defaulter, inte av en optimeringssprint.
- Semantisk HTML och rubrikhierarki. En H1 per sida, rubriknivåer i ordning, riktiga landmärken. Tillgänglighet och teknisk SEO delar till stor del fundament – och från och med EAA är tillgängligheten dessutom ett lagkrav för många.
- Skydda strukturen från misstag. CMS:et ska göra rätt sak lätt: blockarkitekturen ska inte tillåta två H1, bildfält ska kräva alt-text-beslut, och interna länkar ska följa med när sidor byter URL.
De tre fel jag oftast möter i befintliga Umbraco-lösningar
Statiska sitemaps som inte uppdaterats sedan lanseringen. hreflang utan returlänkar, ofta efter att en språkvariant avpublicerats. Och indexerade test- eller stagingmiljöer – det vanligaste och mest onödiga felet av alla. Alla tre är arkitekturfel, inte innehållsfel: de uppstår för att SEO-strukturen byggdes som en engångsinsats i stället för som en del av plattformen.
Vill ni veta var er lösning står?
Den här checklistan är inbyggd i KindbergCo-plattformen från start – det är så jag slipper göra om samma arbete i varje projekt. Kör ni en befintlig Umbraco-lösning och vill veta hur den ligger till går det snabbt att ta reda på: en teknisk genomgång visar vad som brister, vad det betyder och i vilken ordning det bör åtgärdas. Hör av er via formuläret nedan.