Panduan Shopware SEO

How SEO berfungsi pada Shopware 6 — native controls ini ships (Twig-templated SEO URLs, canonical handling, sitemap XML, hreflang via Sales Channel/Domain model, dan, di recent versi, native robots.txt dan JSON-LD), versi gates itu decide what Anda actually get, traps (rebuild indeks setelah sebuah template perubahan, variant duplicate konten, seo_url table growth), dan why headless (Composable Frontends) moves whole SEO checklist ke Nuxt layer.

Pertama kali diterbitkan: 2 Jul 2026 · Terakhir diperbarui: 3 Agu 2026 · Advanced
Bahasa

Shopware 6 ships sebuah unusually besar amount dari native SEO teknis untuk sebuah self-hosted platform — Twig-templated SEO URLs per entity jenis, canonical handling, three-strategy sitemap XML generation, dan hreflang derived dari Sales Channel/Domain model — tetapi what's 'native' depends heavily pada Anda versi: per-domain robots.txt hanya arrived di 6.7.1.0 dan JSON-LD data terstruktur (replacing Microdata) di 6.7.9.0 behind sebuah fitur flag. recurring traps adalah spesifik: Anda harus rebuild SEO indeks (dal:refresh:indeks) setelah changing sebuah URL template, product variants setiap get mereka own URL dan dapat't menjadi canonicalized straight untuk parent without sebuah template override, dan seo_url table grows roughly dengan variants times languages. Going headless dengan Composable Frontends (Vue + Nuxt) moves entire SEO checklist — sitemap, canonical, meta tags, data terstruktur — ke Nuxt rendering layer, where none dari admin SEO settings apply yang sama cara.

TL;DR — Shopware 6 ships more native SEO teknis daripada sebagian besar self-hosted platforms — tetapi “native” (terjemahan) “native” adalah heavily versi-gated. SEO URLs adalah Twig templates per entity jenis (product / category / landing halaman), configurable globally atau per sales channel; perubahan sebuah template dan Anda harus rebuild indeks (dal:refresh:index) atau existing URLs won’t update. Canonical adalah sebuah separate sistem dari URL templates: automatic untuk categories, semi-manual untuk variants (Anda dapat poin one variant di lainnya sebagai canonical, tetapi not straight di parent without sebuah template override). sitemap XML memiliki three refresh strategies (scheduled / live / manual, dengan sitemap:generate untuk manual) dan Shopware explicitly disclaims apa pun pengindeksan guarantee. robots.txt adalah nothing-automatic sebelum 6.7.1.0 (manual file + server rewrite) dan native per-domain admin editing setelah. data terstruktur hanya migrated dari Microdata untuk JSON-LD di 6.7.9.0 behind JSON_LD_DATA flag. hreflang comes dari Sales Channel > Domain model, dengan sebuah cross-sales-channel gap itu spawned paid plugins. dan going headless (Composable Frontends, Vue + Nuxt) moves whole SEO checklist ke Nuxt rendering layer.

Evidence for this claim Shopware 6 provides configurable SEO URL templates and sitemap settings, with behavior dependent on version and sales-channel configuration. Scope: Shopware 6 administration; plugins and release versions can change output. Confidence: high · Verified: Shopware documentation: SEO Evidence for this claim Shopware release notes document material SEO-related changes across 6.7 releases, so exact native behavior must be checked by installed version. Scope: Shopware 6.7 release line, not all earlier installations. Confidence: high · Verified: Shopware 6.7 release notes

frame: native, versi-gated, dan where Anda masih melakukan berfungsi

sebagian besar Shopware SEO konten adalah either sebuah screenshot walkthrough dari admin settings atau sebuah pitch dari sebuah Shopware agency. Neither tells Anda two things itu actually penting: what Shopware ships natively depends pada Anda versi, dan ** remaining gaps adalah spesifik dan predictable.** Sort setiap task ke three buckets — native-dan-saat ini, native-hanya-jika-Anda’re-pada-sebuah-recent-versi, dan masih-Anda-job — dan platform stops menjadi mysterious.

Shopware itself frames native side generously: ini says platform “includes many SEO features out of the box – from country- and language-specific URLs to meta data, hreflang, and performance optimizations, allowing you to build strong SEO without additional plugins.” (terjemahan) “mencakup banyak SEO fitur out dari box – dari country- dan language-spesifik URLs untuk meta data, hreflang, dan performa optimizations, allowing Anda untuk bangun strong SEO without additional plugins.” itu’s largely benar — dengan versi caveats below, dan dengan sebuah pendek list dari things (bulk meta, variant canonicals, cross-channel hreflang, headless rendering) itu masih perlu plugins atau code.

Because Shopware adalah self-hosted dan open-source-core, ini sits differently dari hosted platforms. Where Shopify forces /products/ dan /collections/ prefixes dan won’t let Anda natively edit robots.txt, dan BigCommerce hands Anda sebuah editable robots.txt dan custom struktur URL pada sebuah managed stack, Shopware gives Anda more control daripada apa pun dari them — Anda dapat override storefront templates directly — di cost dari owning more dari outcome, including Anda own hosting, pengindeksan rebuilds, dan (pada headless) Anda own rendering pipeline. ini adalah closer di spirit untuk Magento atau sebuah self-hosted WooCommerce store daripada untuk Shopify.

struktur URL: SEO URL templates

SEO URLs live di Settings > Shop > SEO, dan mereka’re configurable per sales channel atau globally. ada three separately-templated entity jenis — product detail halaman, category halaman, dan landing halaman — dan templates gunakan Twig syntax. Shopware’s docs put ini plainly: “In the SEO settings you can define the structure for the SEO URLs of the product detail pages and categories. For this purpose you have a variety of variables at your disposal.” (terjemahan) “di SEO settings Anda dapat define structure untuk SEO URLs dari product detail halaman dan categories. untuk ini purpose Anda memiliki sebuah variety dari variables di Anda disposal.”

mechanics worth knowing:

  • ** default product template adalah {{ product.name }}**, dan ada 50+ product variables available (product angka, EAN, manufacturer name, breadcrumb/categories, custom fields, release date, dan more).
  • Multi-tingkat variables harus menjadi typed oleh hand. Clicking variable picker hanya inserts incomplete parent token — {{ product.translated.name }} memiliki untuk menjadi finished manually.
  • Anda dapat truncate panjang names. untuk sebuah product name longer daripada, say, 50 characters, Shopware documents {{ product.translated.name[:50] }} untuk shorten ini di URL.
  • ** category default menggunakan breadcrumb:** {% for part in category.seoBreadcrumb %}{{ part }}/{% endfor %}.
  • Twig filters berfungsi untuk normalization — misalnya {{ product.translated.name|lower }}/{{ product.productNumber }} — dan Shopware notes “in general you can use the available Twig filters.” (terjemahan) “di umum Anda dapat gunakan available Twig filters.”
  • Conditional (jika) logic handles missing fields; docs give sebuah variant-aware contoh menggunakan {% if product.canonicalProductId is not null %}.

** trap almost everyone hits:** “After you have made changes to the SEO template, it is necessary to rebuild the index so that the URLs are updated. You can do this from the console using the command php bin/console dal:refresh:index.” (terjemahan) “setelah Anda memiliki dibuat perubahan untuk SEO template, ini adalah necessary untuk rebuild indeks so itu URLs adalah updated. Anda dapat melakukan ini dari console menggunakan command undefined.” Editing sebuah template hanya affects newly generated URLs — existing products pertahankan mereka old slugs until Anda rebuild. jika Anda perubahan template dan “nothing happened,” (terjemahan) “nothing happened,” ini adalah why.

di bawah hood, SEO URLs live di sebuah seo_url database table dengan sebuah dual-URL concept: sebuah technical path_info ( nyata route) dan sebuah human seo_path_info ( slug), plus sales_channel_id, language_id, is_canonical, dan is_deleted/is_modified flags. Custom atau dynamic SEO URL routes adalah ditambahkan oleh developers via sebuah SeoUrlRouteInterface implementation registered dengan shopware.seo_url.route container tag. Anda tidak perlu ini untuk sebuah normal store, tetapi ini menjelaskan scale perilaku di pitfalls bagian below.

tag canonical

Canonicalization pada Shopware adalah sebuah separate mechanism dari URL templates — ini adalah single sebagian besar misunderstood bagian dari Shopware SEO. Shopware’s own docs bahkan define concept cara Google melakukan: “A canonical URL is the URL of the page that the search engine assumes is the most representative of several duplicated pages on your site.” (terjemahan) “sebuah canonical URL adalah URL dari halaman itu mesin pencari assumes adalah paling representative dari several duplicated halaman pada Anda situs.”

Three things untuk pertahankan straight:

  • Categories adalah canonicalized automatically. When sebuah product adalah reachable melalui multiple categories (dan therefore multiple URLs), Shopware’s marketing describes ini sebagai detecting ini dan “automatically marks the correct URL, automatically preventing technical SEO issues.” (terjemahan) “automatically marks correct URL, automatically preventing SEO teknis issues.” Treat marketing phrasing sebagai sebuah claim untuk confirm pada Anda own store, tetapi automatic-category perilaku adalah nyata.
  • Variants adalah hanya semi-manual. setiap variant gets -nya own SEO URL, dan dibangun-di “Variant for Canonical URL” (terjemahan) “Variant untuk Canonical URL” picker lets Anda nominate one variant sebagai canonical target. What ini melakukan not melakukan adalah let Anda canonicalize sebuah variant straight back untuk parent product — sebuah gap practitioners fix oleh overriding product-detail/meta.html.twig (atau dengan sebuah plugin) so variants canonicalize untuk parent’s SEO URL when one exists. jika Anda variant halaman adalah near-duplicates competing dengan setiap lainnya, ini adalah fix.
  • There’s sebuah global 301 perilaku toggle. di bawah “Forwarding behavior,” (terjemahan) “Forwarding perilaku,” Shopware dapat “output an HTTP 301 redirect when URLs are changed” (terjemahan) “output sebuah HTTP 301 redirect when URLs adalah changed” alih-alih leaving old URLs live setelah sebuah template edit — setting itu pairs dengan dal:refresh:index rebuild above.

ini maps directly onto Google’s own stance itu canonicalization adalah sebuah hint dan itu duplicate variant/parameter URLs adalah normal di ecommerce — umum mechanics adalah di canonicalization, which ini artikel adalah Shopware-spesifik companion untuk.

sitemap XML

sitemap lives di Settings > Shop > Sitemap. Shopware “generates a standard sitemap that is compressed and cached in the file system,” (terjemahan) “generates sebuah standard sitemap itu adalah compressed dan cached di file sistem,” dan untuk besar catalogs “the sitemap is divided into several files and can be generated in the background” (terjemahan) “ sitemap adalah divided ke several files dan dapat menjadi generated di background” — multi-file split itu mempertahankan setiap file inside sitemaps.org / Google limits dari 50 000 URLs dan 50 MB uncompressed.

ada three refresh strategies, dan difference penting:

  1. scheduled — generated automatically pada sebuah scheduled task di sebuah set interval.
  2. live — dibuat when none exists, dan recreated once refresh time elapses.
  3. manually — automatic generation adalah off entirely; “the sitemap will only be created if you call the following command manually: php bin/console sitemap:generate. In this case, it is necessary to run this command again each time a new URL is added or an old one is removed.” (terjemahan) “ sitemap akan hanya menjadi dibuat jika Anda panggil following command manually: undefined. di ini case, ini adalah necessary untuk run ini command again setiap time sebuah baru URL adalah ditambahkan atau sebuah old one adalah dihapus.”

Two things people miss:

  • ** public URL adalah sitemap.xml, dan there’s no human-facing /sitemap halaman.** Shopware adalah explicit: “Shopware 6 does not provide a visitor sitemap (suffix /sitemap after your domain). The index file sitemap.xml is created for evaluation by Google.” (terjemahan) “Shopware 6 melakukan not menyediakan sebuah pengunjung sitemap (suffix undefined setelah Anda domain). indeks file undefined adalah dibuat untuk evaluation oleh Google.”
  • sebuah sitemap guarantees nothing. Shopware states outright itu ini “cannot guarantee that every URL will be crawled and indexed. This always depends on the search engine provider.” (terjemahan) “cannot guarantee itu setiap URL akan menjadi di-crawl dan terindeks. ini selalu depends pada mesin pencari provider.” sebuah sitemap adalah sebuah penemuan aid, not sebuah pengindeksan promise — sama sebagai pada setiap lainnya platform.

menambahkan atau excluding custom URLs (beyond products/categories) isn’t sebuah admin toggle — ini adalah developer berfungsi via custom UrlProvider classes, documented di Shopware’s developer sitemap guides.

robots.txt — periksa Anda versi pertama

ini adalah paling versi-sensitive bagian dari Shopware SEO, so date-stamp ini sebelum Anda advise anyone.

  • sebelum 6.7.1.0 (sebagian besar older installs): nothing adalah generated automatically. Shopware’s docs say “the robots file is not created automatically in Shopware 6, but has to be created manually as a text file” (terjemahan) “ robots file adalah not dibuat automatically di Shopware 6, tetapi memiliki untuk menjadi dibuat manually sebagai sebuah text file” placed di /public/. untuk multi-domain setups Anda sajikan per-domain file dengan sebuah server rewrite — Apache RewriteRule ^robots\.txt$ robots/%{HTTP_HOST}.txt [NS] atau NGINX equivalent rewrite ^/robots\.txt$ /robots/$host.txt — pointing di sebuah /public/robots/<domain>.txt structure.
  • dari 6.7.1.0 onward (July 2025 release): native per-domain robots.txt management shipped di admin — Anda “can define individual robots.txt rules for each domain in the Admin under Settings > General > Basic information.” (terjemahan) “dapat define individual robots.txt aturan untuk setiap domain di Admin di bawah Settings > umum > Basic informasi.” ini started sebagai sebuah Hacktoberfest 2024 community contribution.

So myth “Shopware doesn’t let you edit robots.txt” (terjemahan) “Shopware doesn’t let Anda edit robots.txt” adalah hanya benar pre-6.7.1.0. Confirm store’s versi sebelum telling someone untuk “just edit it in the admin” (terjemahan) “hanya edit ini di admin” — older stores masih perlu manual-file-plus-rewrite approach. admin field (“Rules for robots.txt” (terjemahan) “aturan untuk robots.txt” di bawah Settings > umum > Basic informasi) adalah sebuah free-text area merged straight ke itu domain’s robots.txt, so ini accepts full User-agent: / Allow: / Disallow: blocks, not hanya flat aturan — confirmed both di Shopware’s saat ini docs dan di sebuah 6.7.10.0 fix (avoid duplicate robots.txt directives for user-agent blocks) itu specifically reproduces bug menggunakan per-pengguna-agent blocks di itu field.

data terstruktur: Microdata → JSON-LD migration

Shopware went melalui sebuah nyata architecture shift here di 6.7.9.0: storefront moved dari scattered inline Microdata untuk JSON-LD emitted sebagai sebuah <script type="application/ld+json"> block di <head>. ini adalah behind sebuah fitur flag, JSON_LD_DATA, dan adalah off oleh default — dengan flag pada, JSON-LD adalah injected dan old Microdata adalah dihapus. Microdata adalah deprecated dan slated untuk removal di 6.8.0.0.

setelah Anda flip flag, JSON-LD output adalah substantially richer daripada old Microdata:

  • Product — semua product images, VideoObject untuk product videos, AggregateRating dengan ratingCount, up untuk 10 sebagian besar recent Review items, OfferShippingDetails/ShippingDeliveryTime untuk single-price products, Dimensions sebagai QuantitativeValue, itemCondition, typed seller info, dan gtin13 (EAN) / mpn when present.
  • WebSite dengan SearchAction (enables Google’s Sitelinks search box).
  • Top-tingkat Organization (shop logo).
  • ItemList pada category / search-hasil halaman, plus BreadcrumbList.

setiap schema jenis lives di -nya own overridable Twig template di bawah storefront/layout/structured-data/. yang sama 6.7.9.0 release juga ditambahkan per-product Open Graph fields di admin SEO tab — custom og:title, og:description, dan og:image, defaulting untuk product’s meta judul/deskripsi/cover image when unset — so social shares dan beberapa search-hasil previews dapat now diverge intentionally dari meta tags without sebuah plugin.

practical takeaway: ini adalah sebuah myth-buster. Plenty dari practitioner posts dan paid Store extensions (“JSON-LD Rich Snippets for product pages” (terjemahan) “JSON-LD Rich Snippets untuk product halaman”) predate native fitur. jika Anda’re pada 6.7.9.0+, periksa apakah Anda masih perlu itu plugin sebelum buying ini — dan jika Anda’re pada sebuah older versi, itu’s exactly when sebuah plugin masih earns -nya pertahankan. Google’s Product data terstruktur guidelines adalah spec ini output targets, dan Google memerlukan data terstruktur untuk reflect terlihat halaman konten — so fill fields Anda ingin di markup.

SEO internasional: hreflang via Sales Channel + Domain

Shopware doesn’t memiliki sebuah standalone hreflang editor. hreflang adalah derived dari Sales Channel > Domain model: setiap sales channel dapat memiliki multiple domains, dan setiap domain maps untuk one language, one currency, sebuah snippet set, dan sebuah unit sistem — siapkan dengan -nya “own virtual URL, language, currency, snippet set and its own unit system.” (terjemahan) “own virtual URL, language, currency, snippet set dan -nya own unit sistem.”

Two settings melakukan SEO berfungsi:

  • sebuah localization mode dropdown dengan two options: ISO standard, “useful, for example, if you use different (country-specific) language variants that may use their own country-specific terms,” (terjemahan) “berguna, untuk contoh, jika Anda gunakan berbeda (country-spesifik) language variants itu dapat gunakan mereka own country-spesifik istilah,” which produces full region-language codes like en-US vs en-GB; dan browser language localization, which adalah language-hanya (plain en). gunakan ISO standard when Anda genuinely memiliki regional variants.
  • sebuah default domain itu, setelah Anda enable hreflang meta tag, “will serve as a fallback for all languages” (terjemahan) “akan sajikan sebagai sebuah fallback untuk semua languages” — Shopware’s versi dari Google’s x-default.

known weak spot: ini berfungsi di dalam sebuah single sales channel’s domains, tetapi cross-sales-channel hreflang — separate sales channels per country/TLD running near-duplicate catalogs — adalah not natively ditautkan. itu gap adalah exactly what paid “Hreflang Manager” (terjemahan) “Hreflang Manager” store extensions exist untuk solve. I’d treat cross-channel gap sebagai sebuah strong community/marketplace signal alih-alih sebuah documented Shopware limitation, tetapi ini adalah sebuah recurring pain poin pada forums.

One thing Shopware’s own docs don’t spell out itu Google memerlukan: hreflang harus menjadi bidirectional (kembalikan tags) dan sertakan sebuah x-default. jika Anda’re baru untuk kembalikan-tag requirement, umum mechanics adalah di hreflang — Shopware’s default-domain setting handles x-default side, tetapi Anda masih ingin untuk verify kembalikan tags resolve.

Headless: Composable Frontends (Shopware Frontends)

Shopware’s headless option adalah “Shopware Frontends” (terjemahan) “Shopware Frontends” (formerly “Composable Frontends” (terjemahan) “Composable Frontends” / “PWA” (terjemahan) “PWA”) — sebuah Vue.js + Nuxt toolkit itu consumes Shopware Store API, distinct dari default Twig/Symfony storefront. ini ships sebuah component library, sebuah API client, reusable “composables,” (terjemahan) “composables,” dan generated TypeScript jenis; reference “Vue Demo Store” (terjemahan) “Vue Demo Store” adalah dibangun pada Nuxt + Tailwind.

Here’s bagian setiap lainnya guide skips: going headless moves essentially semua SEO responsibility ke Nuxt layer, dan none dari admin SEO settings apply yang sama cara. SEO URL templates, canonical settings, sitemap admin toggle, dan baru robots.txt admin panel adalah semua Symfony-storefront (Twig) fitur. sebuah Composable Frontends bangun perlu -nya own:

  • rendering mode itu produces dapat di-crawl HTML — Nuxt SSR (atau hybrid / ISR / edge rendering) untuk SEO-relevant halaman. sebuah pure client-side-rendered (SPA) bangun reintroduces classic JavaScript-rendering SEO risk, so headless adalah not automatically better untuk SEO — sebuah badly configured headless storefront dapat menjadi worse daripada default Twig one.
  • Sitemap generation, tag canonical, data terstruktur, dan meta-tag injection implemented di Nuxt app (typically via Nuxt’s head/SEO-meta composables), biasanya masih pulling slugs dan product data dari yang sama Shopware SEO URL / Store API data.

So myth “going headless with Shopware fixes/improves SEO” (terjemahan) “going headless dengan Shopware fixes/improves SEO” adalah salah sebagai stated. SEO outcome depends entirely pada how Anda configure rendering di Nuxt. ini adalah yang sama trap sebagai apa pun headless bangun — platform-agnostic versi lives di JavaScript SEO dan CMS headless SEO.

umum pitfalls di scale

practitioner pain poin cluster di three places:

  • Default misconfigurations. Practitioner audits flag itu “Remove Category ID from URL” (terjemahan) “hapus Category ID dari URL” ships atur ke No oleh default (worth enabling untuk cleaner URLs), itu pagination signals adalah off oleh default, dan itu blog/archive pagination halaman adalah worth noindex-ing because mereka “add no value; they only take up crawl budget.” (terjemahan) “tambahkan no nilai; mereka hanya take up anggaran crawling.” One widely repeated claim — itu Shopware auto-menambahkan nofollow untuk semua tautan eksternal — I’d verify terhadap sebuah nyata install sebelum repeating; ini wasn’t confirmed terhadap Shopware’s own docs.
  • Product-variant duplicate konten. ini adalah single sebagian besar recurring Shopware SEO complaint. setiap variant gets -nya own URL (/SW10000.1, /SW10000.2, …) dengan inherited, near-identical deskripsi, so variants compete unless Anda canonicalize them — dan, per canonical bagian above, dibangun-di picker dapat’t poin straight di parent without sebuah template override.
  • seo_url table growth pada besar multilingual catalogs. Row count roughly mengikuti (parent + active variants) × angka dari languages — sebuah practitioner deep dive puts sebuah 9-variant product di seluruh 17 languages di ~153 rows untuk sebuah single product family. Frequent template edits multiply history rows further. di scale fixes adalah: generate SEO URLs untuk parent products hanya (not setiap variant), prune soft-deleted / non-canonical rows periodically, dan tambahkan composite indeks. ini adalah why sebuah besar Shopware store dapat feel slow dan accumulate odd duplicate SEO URLs.

When native alat adalah enough vs. when Anda perlu sebuah plugin atau dev berfungsi

rough threshold echoed di seluruh practitioner sources: native alat adalah enough untuk kecil, sederhana catalogs (pada order dari sebuah few hundred products), dan plugins atau custom development become necessary di meaningful scale — thousands dari SKUs, deep variant matrices, banyak languages, atau cross-sales-channel international setups. Concretely, reach untuk sebuah plugin atau code when Anda perlu bulk judul/meta patterns, canonical-untuk-parent untuk variants, cross-sales-channel hreflang, custom sitemap entries, atau JSON-LD pada sebuah pre-6.7.9.0 versi. Everything else — SEO URL templates, category canonicals, sitemap, single-channel multi-domain hreflang, dan (pada saat ini versi) robots.txt dan JSON-LD — adalah native.

Shopware vs hosted platforms — honest versi

ShopwareShopifyBigCommerce
HostingSelf-hosted / Shopware cloudHosted SaaSHosted SaaS
struktur URLTwig templates, fully customForces /products/, /collections/Fully custom, no forced prefixes
robots.txtNative admin dari 6.7.1.0 (manual sebelum)Not natively editableEditable di admin
dibangun-di schemaNative JSON-LD dari 6.7.9.0 (flagged)App diperlukanYes (Cornerstone)
hreflangNative via Sales Channel/Domain (single-channel)App / theme berfungsiManual
Headless optionComposable Frontends (Vue + Nuxt)HydrogenCatalyst (Next.js)
indeks rebuild langkahYes (dal:refresh:index)Not exposedNot exposed

semua dari them peringkat fine. Shopware’s genuine advantage adalah control — Twig-templated URLs, overridable storefront templates, dan sebuah besar native fitur set itu mempertahankan growing oleh versi. -nya genuine cost adalah itu Anda own more dari pipeline: Anda hosting, Anda indeks rebuilds, Anda versi awareness, dan — jika Anda go headless — Anda entire rendering dan SEO-tag layer. Like Magento dan self-hosted WooCommerce, dan unlike Shopify atau PrestaShop’s simpler defaults, itu trade favors teams dengan development capacity.

Add an expert note

Pin an expert quote

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