Panduan Strapi SEO

Strapi adalah sebuah CMS headless dengan no frontend, so Anda SEO adalah decided oleh how frontend renders — plus konten modeling, SEO plugin, sitemaps, drafts, dan preview hygiene.

Pertama kali diterbitkan: 27 Jun 2026 · Terakhir diperbarui: 3 Agu 2026 · Advanced
Bahasa

Strapi adalah sebuah open-source CMS headless dengan no rendering layer, so ini adalah SEO-neutral — setiap outcome adalah decided oleh frontend (Next.js, Nuxt, Astro) itu consumes -nya API. Render di HTML di bangun atau permintaan time (SSG/SSR), not di browser (CSR). Model SEO fields di Anda konten jenis (gunakan community SEO plugin), pertahankan drafts dan preview/staging deployments out dari indeks, block /admin panel dan raw /api JSON, dan bangun sitemap.xml dan robots.txt di frontend. Get rendering right dan sebuah Strapi situs dapat beat sebuah traditional CMS pada Core Web Vitals.

TL;DR — Strapi adalah sebuah backend-hanya CMS headless (REST + GraphQL, self-hosted atau Strapi Cloud) dengan no rendering layer, so ini adalah SEO-neutral — frontend’s rendering mode decides everything. SSG/SSR ship fully-rendered HTML dan adalah safe; CSR adalah risky (sebuah crawler itu fetches hanya initial HTML sees sebuah empty shell — itu’s how several major AI crawler currently behave); ISR memiliki stale-pada-pertama-permintaan trap. Model SEO fields di Anda konten jenis ( community @strapi/plugin-seo stores dan previews them tetapi melakukan not output HTML, sitemaps, atau robots.txt — itu’s frontend’s job). pertahankan drafts out via publish workflow (tidak pernah pass auth tokens di public permintaan), noindex preview/staging di host tingkat, pertahankan /admin dan raw /api/* JSON out dari search, dan bangun sitemap.xml + robots.txt di frontend. Strapi adalah neutral; Anda architecture adalah product.

Strapi adalah not SEO decision — frontend adalah

single sebagian besar penting concept di Strapi SEO: Strapi memiliki no rendering layer. ini adalah konten storage, sebuah konten model, sebuah editing UI, dan sebuah API. setiap SEO outcome — indexability, metadata, speed, data terstruktur — adalah determined oleh frontend framework consuming Strapi’s API. Strapi’s job adalah purely untuk store dan sajikan right fields.

Evidence for this claim Strapi provides REST and GraphQL content APIs rather than rendering a public website. Scope: GraphQL requires Strapi's GraphQL plugin; REST is available for content types. Confidence: high · Verified: Strapi: REST API

itu membuat “Strapi is bad for SEO” (terjemahan) “Strapi adalah buruk untuk SEO” wrong frame. Strapi adalah neutral. sebagai Strapi’s own team puts ini, “headless architectures require developers to take ownership of SEO aspects that traditional content management systems handle automatically.” (terjemahan) “headless architectures memerlukan developers untuk take ownership dari SEO aspects itu traditional sistem manajemen konten handle automatically.” sebuah Strapi + Next.js situs rendering pada SSG, dengan sebuah disciplined metadata layer, akan outperform sebuah neglected WordPress install. sebuah Strapi situs fronted oleh sebuah client-rendered React SPA dengan no metadata wiring akan quietly fall apart. sama backend, opposite outcomes — because rendering decisions differ. ini adalah yang sama poin I membuat tentang JavaScript SEO umumnya: pertanyaan untuk start dengan adalah selalu how adalah frontend rendering ini konten?

four rendering modes (paling critical decision)

  • SSG — Static situs Generation. HTML dibangun di bangun time, disajikan sebagai static files. Best-case SEO: fully-rendered HTML pada pertama fetch, fast TTFB dan Core Web Vitals. Tradeoff: baru/changed konten perlu sebuah rebuild. Gatsby dan Astro adalah SSG-pertama; Next.js melakukan ini per route.
  • SSR — rendering sisi server. HTML rendered per permintaan pada sebuah server atau edge. selalu-fresh, fully-rendered HTML. Tradeoff: Strapi API latency lands directly di Anda TTFB pada setiap permintaan. Next.js, Nuxt, SvelteKit, Remix.
  • ISR — Incremental Static Regeneration. Static halaman regenerated di background setelah sebuah revalidation window. sebuah baik middle ground dengan one trap (below).
  • CSR — rendering sisi klien. sebuah near-empty shell ships dan browser fetches dari Strapi dan membangun DOM. Worst SEO option: Google harus queue halaman untuk sebuah later render wave — “Googlebot queues all pages with a 200 HTTP status code for rendering, unless a robots meta tag or header tells Google not to index the page” (terjemahan) “Googlebot queues semua halaman dengan sebuah 200 HTTP kode status untuk rendering, unless sebuah robots meta tag atau header tells Google not untuk indeks halaman” — so Anda konten doesn’t exist until itu wave runs. AI crawler dan Bing handle ini far worse daripada Google. Acceptable hanya untuk logged-di dashboards Anda tidak ingin terindeks anyway. sebuah raw React/Vue SPA di atas Strapi lands here oleh default — hindari ini untuk public konten.
Evidence for this claim Google sends pages with successful HTTP responses to a rendering queue and recommends server-side or pre-rendering for reliable content delivery. Scope: Google Search JavaScript processing; rendering is not an assurance of indexing. Confidence: high · Verified: Google: JavaScript SEO basics

** ISR trap:** when revalidation window expires, next permintaan — which dapat menjadi Googlebot — masih gets stale cached halaman; fresh one menyajikan hanya pada following permintaan. untuk volatile data (prices, stock), prefer SSR. ISR adalah ideal untuk konten itu perubahan pada order dari hours atau days.

konten modeling untuk SEO di Strapi

Strapi gives frontend nothing untuk render unless Anda put fields di konten model. untuk setiap public konten jenis, tambahkan sebuah SEO component dengan di minimum:

  • metaTitle, metaDescription
  • canonicalURL
  • ogImage (dan Open Graph / Twitter fields)
  • sebuah robots directive — e.g. sebuah preventIndexing Boolean untuk per-entry noindex control

gunakan Strapi’s UID field untuk slugs — ini auto-generates dari judul dan enforces uniqueness. untuk multilingual situs, enable Strapi’s dibangun-di i18n per konten jenis, localize slug dan SEO fields per locale, lalu output <link rel="alternate" hreflang="..."> di frontend menggunakan localizations relationship setiap entry exposes. sebagai SALT.agency notes, judul “can either be populated with the Strapi SEO Plugin or by creating a text field where the title tag will be stored, with conditions added such as not being shorter than or not exceeding a set amount of characters.” (terjemahan) “dapat either menjadi populated dengan Strapi SEO Plugin atau oleh membuat sebuah text field where tag judul akan menjadi stored, dengan conditions ditambahkan such sebagai not menjadi shorter daripada atau not exceeding sebuah set amount dari characters.”

frontend lalu reads itu fields dari API dan populates <head> — Next.js generateMetadata, Nuxt useSeoMeta, Astro’s layout <head>. reliability aturan adalah yang sama sebagai semua headless SEO: HTML-tingkat metadata beats JS-injected metadata, because Google sees ini pada pertama fetch.

Strapi SEO plugin — what ini melakukan dan doesn’t melakukan

community SEO plugin (@strapi/plugin-seo, formerly @strapi-community/plugin-seo, listed pada Strapi Market) adalah standard alat. ini “embeds a side panel in every Content-Type edit view where you can set meta titles, descriptions, canonical URLs, and social share images,” (terjemahan) “embeds sebuah side panel di setiap konten-jenis edit view where Anda dapat set meta judul, deskripsi, canonical URLs, dan social share images,” menambahkan sebuah SERP preview, dan runs di-konten analysis — green, orange, atau red indicators untuk readability, keyword distribution, dan schema compliance.

What ini melakukan not melakukan, dan ini adalah paling umum misconception:

  • ini melakukan not generate <head> HTML — frontend renders fields.
  • ini melakukan not generate sebuah sitemap — itu’s sebuah separate plugin (pada Strapi 5, Webtools sitemap tambahkan-pada atau strapi-5-sitemap-plugin).
  • ini melakukan not write robots.txt atau implement data terstruktur — frontend’s job.

dengan kata lain, plugin gives editors sebuah baik authoring UX dan stores clean fields. frontend masih memiliki untuk melakukan actual SEO output.

Drafts, preview, /admin, dan /api — keeping wrong things out dari indeks

ini adalah where Strapi memiliki more failure modes daripada sebuah hosted platform like Shopify.

  • Draft/Publish. Strapi marks drafts dengan publishedAt: null; API mengembalikan hanya published entries untuk unauthenticated permintaan. critical discipline: tidak pernah pass sebuah authenticated API token di public frontend permintaan, atau semua draft konten becomes fetchable. sitemap plugin/tambahkan-pada respects publish state dan hanya mencakup published URLs.
  • Preview / staging environments. Vercel branch deploys, Netlify deploy previews, dan dedicated preview hosts consuming Strapi drafts adalah biasanya publicly reachable. Block them dengan sebuah layered approach: sebuah X-Robots-Tag: noindex header di host tingkat (not hanya sebuah meta tag sebuah CSR halaman injects late), Disallow: / di robots.txt, sebuah noindex meta tag pada setiap halaman, dan HTTP authentication where mungkin. Watch Search Console untuk unexpected hostnames — itu’s Anda early warning.
  • ** /admin panel.** Strapi’s admin adalah sebuah React SPA; confirm ini carries <meta name="robots" content="noindex"> (Strapi v4+ melakukan), pertahankan ini off public tautan, dan password-protect ini — sebuah unprotected /admin adalah discoverable via Google dorking.
  • ** raw /api/* JSON.** ini won’t peringkat sebagai sebuah halaman, tetapi ini wastes anggaran crawling dan dapat leak data. sebagian besar production setups put API pada -nya own subdomain (cms.example.com / api.example.com); block itu subdomain entirely di robots.txt dan pertahankan ini off sitemap. jika API dan frontend share sebuah domain, Disallow: /api/.

Sitemaps dan robots.txt — dibangun di frontend

There’s no Yoast, so both adalah explicit. Two sitemap routes:

  1. sebuah sitemap plugin inside Strapi — generates XML dan hanya mencakup published entries. pada Strapi 5 maintained option adalah Webtools sitemap tambahkan-pada (strapi-plugin-webtools + webtools-addon-sitemap) untuk larger, multilingual situs, atau strapi-5-sitemap-plugin untuk simpler ones. older standalone strapi-plugin-sitemap (pluginpal) tops out di Strapi 4 — -nya own docs poin v5 pengguna untuk Webtools instead, so don’t install ini pada sebuah v5 project. Quoting plugin docs: when draft/publish adalah pada, “this setting will make sure that all draft pages are excluded from the sitemap.” (terjemahan) “ini setting akan pastikan itu semua draft halaman adalah excluded dari sitemap.”
  2. Frontend-generated — Next.js sitemap.ts, Astro @astrojs/sitemap, Nuxt sitemap modules, fetching published URLs dari Strapi API. More control di atas canonical URLs, lastmod, dan changefreq.

robots.txt adalah disajikan dari frontend (Next.js robots.ts, Astro public/robots.txt). sertakan sebuah Sitemap: directive, block preview hosts dengan Disallow: /, dan — sebagai dengan apa pun headless stack — tidak pernah disallow .js atau .css (ini blocks rendering).

tinggi-nilai pattern adalah webhook workflow: Strapi fires sebuah webhook pada publish → triggers sebuah Vercel/Netlify rebuild atau pada-demand revalidation → regenerates sitemap → pings Google Search Console dan IndexNow. Because headless konten updates flow melalui sebuah API alih-alih sebuah plugin itu pings mesin pencari, IndexNow (Bing, Yandex, dan others) adalah terutama valuable wired untuk itu publish webhook.

Strapi Cloud vs. self-hosted — SEO implications

Strapi’s hosting affects API respons time, which penting differently oleh rendering mode:

  • SSG/ISR: Strapi API speed penting di bangun time, not runtime — halaman adalah pre-dibangun, so API latency doesn’t touch pengguna’s TTFB.
  • SSR: Strapi API latency menambahkan directly untuk TTFB pada setiap permintaan → affects LCP → sebuah nyata peringkat input. ini adalah case untuk mengoptimalkan.

Strapi Cloud adalah managed infrastructure dengan sebuah asset CDN — baik untuk teams without DevOps. Self-hosted gives Anda full control dari caching (Redis), database pengindeksan, dan geographic proximity untuk frontend. Either cara: cache Strapi API respons di CDN layer, atau gunakan ISR dengan pendek revalidation, untuk decouple frontend runtime dari Strapi latency. One caveat worth stating plainly — Strapi Cloud’s CDN menyajikan Strapi API dan assets, not Anda frontend situs web; Anda Core Web Vitals adalah diukur terhadap frontend, which adalah hosted separately (Vercel, Netlify, Cloudflare halaman).

Migrating untuk atau dari Strapi

WordPress → Strapi adalah umum path, dan migrations adalah where headless SEO actually goes wrong:

  • Map setiap existing slug exactly onto Strapi’s UID field; apa pun slug perubahan perlu sebuah 301 redirect (gunakan strapi-plugin-redirect-urls atau Smart Redirect Manager, read oleh frontend/middleware).
  • Migrate meta judul, deskripsi, dan og:image dari wp_postmeta ke SEO component fields, dan image teks alt ke Media Library alternativeText field.
  • Inventory setiap URL — not hanya posts: tag halaman, paginated archives, parameter URLs — dan bangun peta pengalihan sebelum go-live.
  • Migrate canonicals explicitly; don’t assume frontend auto-generates them right.
  • Post-launch: run sebuah Screaming Frog crawl comparison, re-verify data terstruktur dengan Rich hasil Test, resubmit sitemaps untuk GSC dan Bing, dan stand up IndexNow.

Strapi SEO adalah really sebuah specialized application dari JavaScript SEO dan rendering — sibling CMS headless SEO write-up covers platform-agnostic versi dari semua dari ini.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.