Astro SEO trin for trin: statisk eller server-rendering, head-tags, sitemap, hreflang, billeder, JSON-LD og omdirigeringer, kontrolleret mod de officielle dokumenter.

På denne side
Kort sagt
Astro er et af de mest søgemaskinevenlige webframeworks, fordi det prerenderer sider til ren HTML og ikke sender noget JavaScript til browseren, medmindre du beder om det. Det giver Google og AI-crawlere komplet indhold ved første forespørgsel. Astro skriver dog ikke din SEO for dig: titler, metabeskrivelser, kanoniske URL'er, hreflang, strukturerede data og omdirigeringer er din opgave at tilføje, mest i én fælles head-komponent plus den officielle sitemap-integration.
Vil du vide mere? Spørg
Hurtig quiz
Passer SEO til dig, og hvordan skal du starte?
Sorank matcher dine svar
Test det i 3 dage på dit eget site, og se, hvor du står på Google, ChatGPT og de andre AI'er.
Start prøveperiode på 3 dage3 dage gratis, derefter stopper du, når du vil. 90 dages garanti: resultater eller pengene tilbage.
Astro SEO er arbejdet med at gøre den rene HTML til sider, der rangerer. Googles egen guide til grundlæggende JavaScript-SEO forklarer, at Google behandler JavaScript-sites i tre faser (crawling, rendering, indeksering), og fastslår, at „server-side eller prerendering stadig er en god idé“, fordi ikke alle bots kan køre JavaScript. Astro starter fra den position som standard. Denne guide dækker resten, indstilling for indstilling, med hver adfærd kontrolleret mod den officielle Astro-dokumentation. Som kontekst kører sorank.com, som du læser nu, på Astro.
Ja, teknisk set. Astro renderer komponenter til HTML på byggetidspunktet og fjerner det JavaScript, som frameworks som React eller Vue normalt sender til browseren. Resultatet undgår de klassiske problemer, der beskrives i vores guide til JavaScript-SEO: tomme HTML-skaller, indhold der først vises efter rendering, og links, der ikke er rigtige anchor-tags. Det undgår også routing-fælderne i en single-page application, fordi hver Astro-rute er en rigtig URL med sin egen HTML-fil.
Det, Astro ikke gør, er lige så vigtigt. Der findes intet indbygget SEO-plugin, ingen automatisk metabeskrivelse, intet automatisk kanonisk tag og ingen strukturerede data. Tabellen nedenfor skelner mellem det, du får gratis, og det, du selv skal bygge.
| SEO-element | Hvad Astro giver dig | Hvad du tilføjer |
|---|---|---|
| Crawlbar HTML | Prerenderet HTML som standard | Intet, medmindre du renderer indhold kun på klienten |
| Titel og metabeskrivelse | En head, du styrer i hver layout | En fælles SEO-komponent, der får data fra hver side |
| Kanonisk tag | Astro.site og Astro.url til at bygge absolutte URL'er | Selve link-tagget med en ensartet afsluttende skråstreg |
| XML-sitemap | Den officielle @astrojs/sitemap-integration | Installér den, angiv site-indstillingen, filtrér private sider fra |
| hreflang | i18n-routing og en i18n-indstilling for sitemap | Alternate-links i head'en på hver side |
| Billeder | Image- og Picture-komponenter, der optimerer filer | Beskrivende alt-tekst, fornuftige størrelser |
| Strukturerede data | Intet specifikt | JSON-LD-scripts pr. sidetype |
| Omdirigeringer | En redirects-indstilling i konfigurationen | Rigtige 301'er på værtsniveau til statiske builds |
Astros dokumentation om rendering på forespørgsel er klar: som standard prerenderes sider, ruter og API-endpoints på byggetidspunktet som statiske sider. Til SEO er statisk output den sikreste standard: hver URL er en færdig HTML-fil, der leveres fra et CDN, hurtigt og ens for alle besøgende og alle bots.
Rendering på forespørgsel (server) kræver en adapter til din host (Node, Netlify, Vercel eller Cloudflare, for eksempel). Derefter fravælger du prerendering for en enkelt rute med export const prerender = false, eller du skifter hele projektet med output: 'server' og tillader statiske sider igen. Begge tilstande producerer fuld HTML, så Google ser det samme. Forskellene ligger andre steder:
Den praktiske regel: hold markedsføringssider, blogindlæg og dokumentation statiske, og render kun de ruter på forespørgsel, der har brug for live data. Astros dokumentation giver samme anbefaling og råder til at beholde standardtilstanden static, indtil de fleste af dine sider har brug for rendering på forespørgsel.
Opret én SEO-komponent (ofte kaldet BaseHead eller Seo) og inkluder den i head'en på hver layout. Den modtager en titel, en beskrivelse, et valgfrit billede og et valgfrit noindex-flag, og udsender:
Angiv site-indstillingen i astro.config.mjs først: det kanoniske tag, sitemappet og de sociale tags afhænger alle af den. Vælg derefter en trailingSlash-politik ('always' eller 'never') og hold dig til den, så /blog/post og /blog/post/ aldrig konkurrerer som to versioner af samme side. Forespørgselsparametre skal fjernes fra det kanoniske tag, så sporingsparametre ikke skaber dubletter.
Tip
Hvis dine artikler ligger i content collections, så gør titel og beskrivelse til obligatoriske felter i collection-skemaet. Byggeriet fejler så, når en forfatter glemmer en metabeskrivelse, i stedet for at sende et tomt uddrag til Google.
Brug den officielle integration, der er dokumenteret på @astrojs/sitemap-siden. Kørsel af npx astro add sitemap installerer den og tilføjer den til din konfiguration. Den kræver site-indstillingen og skriver ved build en fil sitemap-index.xml, der peger på nummererede filer (sitemap-0.xml, og flere på store sites). Hver fil indeholder op til 45,000 poster som standard, styret af indstillingen entryLimit. Hvis formatet er nyt for dig, forklarer vores ordbogsartikel om XML-sitemap, hvad Google gør med det.
Tre indstillinger betyder noget for SEO:
Vær opmærksom
Dokumentationen oplyser, at integrationen ikke kan generere sitemap-poster for dynamiske ruter i SSR-tilstand. Hvis dine produkt- eller artikelsider renderes på forespørgsel, mangler de i sitemappet, medmindre du prerenderer dem eller tilføjer dem selv.
For robots.txt er en statisk fil i public-mappen nok på de fleste sites. Hvis indholdet er forskelligt mellem staging og produktion, generér den i stedet fra et endpoint (src/pages/robots.txt.ts). I begge tilfælde tilføjer du en Sitemap-linje, der peger på sitemap-index.xml, og tester resultatet med en kontrol af robots.txt før lancering. Den samme endpoint-teknik producerer en llms.txt-fil; vores guide om hvordan du installerer en llms.txt-fil dækker indholdet.
Astros indbyggede i18n-routing klarer URL-delen. I konfigurationen erklærer du en defaultLocale og en liste over locales, og vælger om standardsproget også får et præfiks (prefixDefaultLocale). Hjælpefunktioner som getRelativeLocaleUrl bygger lokaliserede links, og Astro.currentLocale fortæller hver side, hvilket sprog den er på.
Routing-guiden dækker ikke hreflang-tags i head'en, så planlæg at skrive dem selv i SEO-komponenten: for hver side ét alternate-link pr. sprogversion, plus en x-default, alle som absolutte URL'er, og hver version skal linke til alle de andre (gensidige links). At generere dem ud fra den samme locale-liste som din routing undgår den hyppigste fejl, et alternate, der peger på en side, som ikke findes. For at kontrollere logikken på et par URL'er viser vores generator for hreflang det fulde sæt tags for en side. Aktivér derefter i18n-indstillingen for sitemap som et andet signal.
Hastighed er der, hvor Astro vinder mest terræn, og det kan ses i Core Web Vitals. Astros guide til billeder beskriver Image-komponenten fra astro:assets: den optimerer lokale billeder, konverterer deres format, udsender lazy loading og asynkron afkodning, og udleder billedernes dimensioner for at undgå Cumulative Layout Shift. Attributten alt er obligatorisk på den, hvilket håndhæver en grundlæggende regel for billed-SEO. Picture-komponenten går længere og leverer AVIF eller WebP med en reserve.
To vaner fuldender billedet. Behold billeder, der skal optimeres, i src (filer i public serveres uændret, uden behandling). Og lazy-load ikke hovedbilledet øverst på siden: giv det eager loading, så det ikke forsinker Largest Contentful Paint.
Island-arkitekturen holder styr på JavaScript. En komponent er statisk HTML, indtil du tilføjer et client-direktiv: client:load hydrerer den med det samme, client:idle når browseren er ledig, client:visible først når den kommer ind i synsfeltet. At reservere client:load til det, der skal reagere med det samme (en menu, en indkøbskurv), er den enkleste måde at beskytte Interaction to Next Paint. Server-islands (server:defer) lader en personlig blok indlæse efter den cachede side, uden at sinke hovedindholdet.
Bemærk
En island skjuler kun sin interaktivitet, ikke sin tekst, så længe komponenten renderes på serveren først. Indhold hentet i browseren efter indlæsning er en anden sag: crawlere, der ikke kører JavaScript, og det inkluderer mange AI-crawlere, vil ikke se det.
Astro har ingen skemafunktion, hvilket giver dig fuld kontrol. Byg et JavaScript-objekt for hver sidetype (Article, Product, Organization, BreadcrumbList, FAQPage) og udsend det i et script-tag af typen application/ld+json, med set:html-direktivet og JSON.stringify, så JSON ikke bliver escaped. Hent data fra samme frontmatter eller collection-data som den synlige side, så markeringen altid stemmer med det, brugerne ser, hvilket er et krav i Googles retningslinjer for schema markup.
Til at udarbejde JSON for en ny sidetype giver vores gratis generator for skemaer dig en gyldig startblok, som du derefter gør til en skabelon. Valider en stikprøve af byggede sider med Googles Rich Results Test efter hver ændring af skabelonen.
Migreringer fra WordPress eller Next.js er det mest risikable øjeblik for et Astro-site. Behold hver URL, der har trafik eller backlinks, og kortlæg de øvrige en for en til deres nærmeste ækvivalent med permanente omdirigeringer, som forklaret i vores guide til SEO-omdirigeringer.
Astros konfiguration accepterer et redirects-objekt, der kortlægger gamle stier til nye. Med en server-adapter bliver de til rigtige HTTP-omdirigeringer. På et rent statisk build skriver Astro i stedet en HTML-side med en meta refresh, som Google følger, men behandler som et svagere signal end en server-side 301. Til et statisk site skal du derfor angive omdirigeringerne i din hosts eget format (en _redirects-fil på Netlify eller Cloudflare Pages, en vercel.json-fil på Vercel), så crawlere modtager en ægte 301.
At blive citeret af ChatGPT, Perplexity eller Gemini starter med at være læsbar. Mange AI-crawlere henter den rå HTML og kører ikke JavaScript, så et site, der leverer sin fulde tekst i første svar, som Astro gør som standard, fjerner en barriere, som klient-renderede sites stadig har. Rene overskrifter, svar-først-afsnit, strukturerede data og en llms.txt-fil gør så hver side lettere at citere.
Mål efter lancering i stedet for at gætte. Sorank GEO- og SEO-dashboardet samler dine data fra Search Console og dine besøg fra AI-assistenter, så du kan se, om det nye site holder sine positioner.

Teknisk kvalitet betaler sig kun med indhold, der kan rangere. Soranks AI-generator af blogartikler skriver og publicerer artikler optimeret til Google og AI-assistenter, og den forbinder til et tilpasset site, som et Astro-projekt, via webhook.
Astro giver dig crawlbar, hurtig HTML som standard; rangering afhænger stadig af de head-tags, sitemap, hreflang, strukturerede data og omdirigeringer, du tilføjer oven på. Opsæt den fælles SEO-komponent og sitemappet først, og arbejd derefter tabellen ovenfor igennem før lancering.
Nej. Astro har intet officielt samlet SEO-plugin: du skriver titel, metabeskrivelse, kanonisk tag og sociale tags i en fælles head-komponent. Den officielle @astrojs/sitemap-integration dækker sitemappet. Der findes community-pakker, men en lille komponent af egen produktion er let at vedligeholde og helt under din kontrol.
Begge kan producere fuldt renderet HTML, så Google kan indeksere begge godt. Astro sender langt mindre JavaScript som standard, hvilket typisk gør indholdssites hurtigere og hjælper Core Web Vitals. Next.js passer bedre til meget interaktive applikationer; til blogs, markedsføringssider og dokumentation er Astro det enklere valg til SEO.
Ja. En side renderet på forespørgsel returnerer fuld HTML til Googlebot, præcis som en prerenderet side. Det, du skal holde øje med, er serverens svartid, som påvirker indlæsningshastigheden, og sitemap-integrationen, der ikke kan liste dynamiske ruter renderet i servertilstand, medmindre du tilføjer dem selv.
DE PRØVEDE SORANK, FØR DU GJORDE DET
