چک‌لیست سئو تکنیکال فروشگاه اینترنتی: Shopify و WooCommerce

بررسی‌های سئو تکنیکال برای فروشگاه‌های Shopify و WooCommerce: noindex، robots.txt، نقشه سایت، عنوان، H1، canonical، داده ساختاریافته Product، Open Graph و متن alt.

تیم تحریریه FixReports14 دقیقه مطالعه

چک‌لیست سئو تکنیکال برای یک فروشگاه اینترنتی سه چیز را تأیید می‌کند: موتورهای جستجو می‌توانند صفحاتی را که می‌خواهید دیده شوند خزش و ایندکس کنند، می‌توانند تشخیص دهند هر صفحه درباره چیست و می‌توانند آن را به‌خوبی در نتایج نمایش دهند. در عمل یعنی: هیچ قانون noindex ناخواسته‌ای در کار نباشد، robots.txt صفحات مهم را مسدود نکند، نقشه سایت از URLهای canonical تشکیل شده باشد، هر صفحه عنوان و توضیحات متای منحصربه‌فرد و یک H1 واضح داشته باشد، تگ‌های canonical نسخه‌های تکراری واریانت‌ها و کالکشن‌ها را یکپارچه کنند، داده ساختاریافته Product معتبر باشد، تگ‌های Open Graph و متن alt توصیفی وجود داشته باشند و هیچ لینک داخلی شکسته‌ای نباشد. این بررسی‌ها موانع فنی را برطرف می‌کنند؛ رتبه یا ترافیک را تضمین نمی‌کنند.

نکات کلیدی

  • فایل robots.txt خزش را کنترل می‌کند، نه ایندکس شدن را. برای اینکه صفحه‌ای در Google نمایش داده نشود، از noindex استفاده کنید و آن صفحه را در robots.txt مسدود نکنید، وگرنه Google هرگز این قانون را نمی‌بیند (Google Search Central (در زبانه جدید باز می‌شود)).
  • هر فایل نقشه سایت می‌تواند حداکثر 50,000 URL یا 50 MB (بدون فشرده‌سازی) داشته باشد و Google به <priority> و <changefreq> توجهی نمی‌کند (Google Search Central (در زبانه جدید باز می‌شود)).
  • به گفته Google تعداد ایده‌آلی برای سرتیترها وجود ندارد، اما یک H1 که نام محصول را بیان کند، واضح‌ترین عنوان اصلی برای خریداران و صفحه‌خوان‌هاست.
  • فهرست‌های فروشنده (merchant listings) به نام محصول، تصویر و یک Offer تودرتو (نه AggregateOffer) با قیمتی بالاتر از صفر و واحد پول نیاز دارند (Google Search Central (در زبانه جدید باز می‌شود)).

Shopify و WooCommerce به‌طور پیش‌فرض چه مواردی را مدیریت می‌کنند؟

Shopify بیشتر اصول پایه سئو تکنیکال را در خود پلتفرم و قالب مدیریت می‌کند، در حالی که فروشگاه WooCommerce برای چند مورد از آن‌ها به هسته WordPress و یک افزونه سئو متکی است.

موردShopifyWooCommerce (WordPress)
نقشه سایت XML/sitemap.xml، خودکار/wp-sitemap.xml از WordPress 5.5، یا نقشه سایت یک افزونه سئو
robots.txtخودکار؛ ویرایش با robots.txt.liquidفایل مجازی WordPress که نقشه سایت هسته را فهرست می‌کند
تگ‌های canonicalبه‌طور خودکار اضافه می‌شوندهسته فقط در صفحات تکی اضافه می‌کند
توضیحات متافیلدی در بخش search engine listing هر محصولافزونه سئو یا قالب
داده ساختاریافته Productقالب، از طریق فیلتر structured_dataJSON-LD هسته WooCommerce در صفحات محصول
تگ‌های Open Graphقالب (Dawn: meta-tags.liquid)افزونه سئو یا قالب
سبد خرید و تسویه‌حسابدر robots.txt با Disallow مسدود شده‌اندWooCommerce آن‌ها را noindex علامت‌گذاری می‌کند

جزئیات و منابع هر ردیف در ادامه آمده است (وضعیت تا اکتبر 2026).

چگونه مطمئن شوید صفحات فروشگاه قابل ایندکس هستند؟

یک صفحه زمانی قابل ایندکس است که وضعیت 200 برگرداند، با robots.txt مسدود نشده باشد و هیچ قانون noindex نداشته باشد.

قانون noindex می‌تواند در یک متاتگ یا یک هدر HTTP قرار بگیرد و Google از آن درون robots.txt پشتیبانی نمی‌کند (Google (در زبانه جدید باز می‌شود)):

<meta name="robots" content="noindex">
X-Robots-Tag: noindex

فایل robots.txt ترافیک خزنده‌ها را مدیریت می‌کند؛ URL مسدودشده اگر صفحات دیگر به آن لینک داده باشند، همچنان ممکن است بدون توضیحات در نتایج ظاهر شود (Google (در زبانه جدید باز می‌شود)). گزارش Page indexing (در زبانه جدید باز می‌شود) در Search Console هر URL ایندکس‌نشده را همراه با دلیل آن فهرست می‌کند، مثلاً «URL marked ‘noindex’». لازم نیست همه URLها ایندکس شوند، اما محصولات و کالکشن‌های شما باید ایندکس شوند.

Shopify

فایل robots.txt پیش‌فرض مسیرهای پنل مدیریت (admin)، سبد خرید، تسویه‌حساب، حساب کاربری و سفارش‌ها را مسدود می‌کند، به‌علاوه URLهای فیلترشده (/collections/*+*) و مرتب‌شده (sort_by) کالکشن‌ها که تکرار صفحات کالکشن هستند. می‌توانید آن را با قالب robots.txt.liquid ویرایش کنید، اما Shopify این کار را یک سفارشی‌سازی پشتیبانی‌نشده می‌داند و هشدار می‌دهد که اشتباه در آن می‌تواند کل ترافیک فروشگاه را از بین ببرد (مرکز راهنمای Shopify (در زبانه جدید باز می‌شود)).

برای پنهان کردن یک صفحه، پست وبلاگ یا محصول، یک متافیلد از نوع عدد صحیح (integer) با نام seo.hidden و مقدار 1 تنظیم کنید؛ این کار آن را از نقشه‌های سایت، موتورهای جستجو و جستجوی داخلی فروشگاه پنهان می‌کند. وضعیت محصول Unlisted نیز محصولات را از کالکشن‌ها و پیشنهادها پنهان می‌کند (مرکز راهنمای Shopify (در زبانه جدید باز می‌شود)). تا زمانی که فروشگاه با رمز عبور محافظت می‌شود، موتورهای جستجو نمی‌توانند نقشه سایت آن را بخوانند.

WooCommerce

در WordPress بخش Settings > Reading > Search engine visibility را بررسی کنید. وقتی گزینه «Discourage search engines from indexing this site» تیک خورده باشد، WordPress (از نسخه 5.3) یک متاتگ robots با مقدار noindex, nofollow به صفحات شما اضافه می‌کند (WordPress.org (در زبانه جدید باز می‌شود)) و نقشه سایت هسته را غیرفعال می‌کند. اگر فروشگاه روی یک سایت staging ساخته شده، مطمئن شوید این تیک هنگام راه‌اندازی برداشته شده است. خود WooCommerce صفحات سبد خرید، تسویه‌حساب و My account را noindex علامت‌گذاری می‌کند و روی endpointهایی مانند order received هدر X-Robots-Tag: noindex می‌فرستد (کد منبع WooCommerce (در زبانه جدید باز می‌شود))، که رفتاری مورد انتظار است.

نقشه سایت XML یک فروشگاه اینترنتی باید شامل چه چیزهایی باشد؟

نقشه سایت فقط باید URLهای canonical و قابل ایندکسی را فهرست کند که می‌خواهید در جستجو دیده شوند: محصولات، کالکشن‌ها یا دسته‌بندی‌ها، صفحات محتوایی و پست‌های وبلاگ.

قوانین Google: حداکثر 50,000 URL یا 50 MB در هر فایل، یک sitemap index برای مجموعه‌های بزرگ‌تر، URLهای مطلق، فقط URLهایی که می‌خواهید در نتایج نمایش داده شوند و استفاده از <lastmod> فقط وقتی دقیق است (Google (در زبانه جدید باز می‌شود)). نقشه سایت را در گزارش Sitemaps در Search Console ثبت کنید یا در robots.txt به آن ارجاع دهید:

Sitemap: https://example.com/sitemap.xml

در Shopify، هر دامنه یک sitemap.xml خودکار دارد که به نقشه‌های سایت فرعی برای محصولات، کالکشن‌ها، وبلاگ‌ها و صفحات لینک می‌دهد و با افزودن آن‌ها به‌روز می‌شود؛ هر دامنه بین‌المللی نقشه سایت خودش را دارد (مرکز راهنمای Shopify (در زبانه جدید باز می‌شود)).

در WooCommerce، نسخه 5.5 و بالاتر WordPress یک sitemap index هسته را در /wp-sitemap.xml ارائه می‌کند که در robots.txt خود WordPress به آن ارجاع داده شده و به‌طور پیش‌فرض تا 2,000 ورودی در هر نقشه سایت دارد. افزونه‌های سئو مانند Yoast SEO آن را با نقشه سایت خودشان جایگزین می‌کنند (Make WordPress Core (در زبانه جدید باز می‌شود)). پیش از ثبت، بررسی کنید کدام نقشه سایت واقعاً فعال است.

عنوان محصولات و توضیحات متا را چگونه بنویسید؟

به هر صفحه یک عنوان منحصربه‌فرد و توصیفی و یک توضیحات متا بدهید که آن را خلاصه کند و کلمات مهم را اول بیاورید، چون Google هر دو را متناسب با اندازه صفحه نمایش کوتاه می‌کند.

راهنمای Google برای عنوان: عنوان‌ها توصیفی و مختصر باشند، از انباشت کلمات کلیدی (keyword stuffing) و متن‌های قالبی تکراری پرهیز کنید و نام سایت را با یک جداکننده در ابتدا یا انتهای عنوان بیاورید. محدودیت طولی وجود ندارد، اما لینک‌های عنوان (title links) متناسب با عرض دستگاه کوتاه می‌شوند (Google (در زبانه جدید باز می‌شود)). Google همچنین می‌تواند لینک عنوان را از متن دیگری مانند H1 یا og:title بسازد.

برای اسنیپت‌ها، Google بیشتر از محتوای صفحه استفاده می‌کند و زمانی از توضیحات متا بهره می‌گیرد که صفحه را دقیق‌تر توصیف کند. Google پیشنهاد می‌کند اطلاعات محصول مانند قیمت یا سازنده را در آن بگنجانید و می‌گوید توضیحات تولیدشده به‌صورت خودکار اشکالی ندارند، به شرط آنکه خوانا و متنوع باشند (Google (در زبانه جدید باز می‌شود)).

<title>Linen shirt, natural, relaxed fit | Example Store</title>
<meta name="description" content="Relaxed-fit shirt in European linen. Sizes XS to XXL, $68, free returns within 30 days.">

آیا هر صفحه باید دقیقاً یک H1 داشته باشد؟

Google تعداد مشخصی را الزامی نمی‌کند، اما یک H1 که نام صفحه را بیان کند، واضح‌ترین عنوان اصلی برای خریداران، صفحه‌خوان‌ها و موتورهای جستجوست.

راهنمای شروع سئو Google (SEO starter guide) می‌گوید تعداد ایده‌آلی برای سرتیترها وجود ندارد و ترتیب سرتیترها برای جستجو اهمیتی ندارد، هرچند ترتیب معنایی به صفحه‌خوان‌ها کمک می‌کند (Google (در زبانه جدید باز می‌شود)). راهنمای لینک عنوان Google پیشنهاد می‌کند عنوان اصلی برجسته‌ترین متن صفحه باشد، برای مثال به‌صورت نخستین <h1> قابل مشاهده. آموزش W3C نیز می‌افزاید که سرتیترها ساختار صفحه را منتقل می‌کنند و باید از جا انداختن سطوح سرتیتر پرهیز کرد (W3C WAI (در زبانه جدید باز می‌شود)).

اشکالات رایج در فروشگاه‌ها: لوگو درون H1 در همه صفحات، نام محصول در یک <div> یا H2، یک H1 دوم که یک اپ اضافه کرده و صفحات کالکشن بدون H1.

URLهای canonical چگونه نسخه‌های تکراری واریانت و کالکشن را مدیریت می‌کنند؟

تگ canonical به Google می‌گوید از میان چند URL با محتوای یکسان کدام را ایندکس کند، بنابراین URLهای دارای پارامتر واریانت و URLهای مسیر کالکشن باید به یک URL ترجیحی محصول اشاره کنند.

Google ریدایرکت‌ها و rel="canonical" را سیگنال قوی و حضور در نقشه سایت را سیگنال ضعیف می‌داند. از URLهای مطلق استفاده کنید و برای انتخاب canonical از robots.txt یا noindex کمک نگیرید (Google (در زبانه جدید باز می‌شود)). برای واریانت‌هایی که با یک پارامتر کوئری اختیاری مانند ?color=green مشخص می‌شوند، Google پیشنهاد می‌کند URL بدون پارامتر canonical باشد. Google بخش‌های # (fragment) را نادیده می‌گیرد، بنابراین واریانت‌ها به مسیر یا پارامتر نیاز دارند؛ همچنین توصیه می‌کند صفحات قابل ایندکس canonical خودارجاع داشته باشند و URLها در لینک‌ها، نقشه‌های سایت و تگ‌های canonical یکسان باشند (Google (در زبانه جدید باز می‌شود)).

<link rel="canonical" href="https://example.com/products/linen-shirt">

اگر Google انتخاب شما را نادیده بگیرد، گزارش Page indexing وضعیت «Duplicate, Google chose different canonical than user» را نشان می‌دهد که معمولاً نشانه سیگنال‌های متناقض است.

  • Shopify: تگ‌های canonical به‌طور خودکار ساخته می‌شوند (مرکز راهنمای Shopify (در زبانه جدید باز می‌شود))؛ قالب Dawn تگ <link rel="canonical" href="{{ canonical_url }}"> را چاپ می‌کند. قالب‌هایی که از فیلتر within استفاده می‌کنند، URLهای محصول وابسته به کالکشن (/collections/summer/products/linen-shirt) می‌سازند و Shopify یادآوری می‌کند که این URLها تکرار صفحه استاندارد محصول هستند (Shopify (در زبانه جدید باز می‌شود)). بررسی کنید canonical آن‌ها به /products/linen-shirt اشاره کند.
  • WooCommerce: هسته WordPress فقط در نماهای تکی مانند محصولات و برگه‌ها تگ canonical چاپ می‌کند (مرجع توسعه‌دهندگان WordPress (در زبانه جدید باز می‌شود))، بنابراین آرشیوهای فروشگاه و دسته‌بندی‌ها به افزونه سئو یا قالب شما وابسته‌اند. تغییر ساختار پیوند یکتای (permalink) محصولات، URL همه محصولات را تغییر می‌دهد و لینک‌های قدیمی خطای 404 برمی‌گردانند، مگر اینکه ریدایرکت اضافه کنید (WooCommerce (در زبانه جدید باز می‌شود)).

چگونه داده ساختاریافته Product را برای merchant listings راه‌اندازی کنید؟

نشانه‌گذاری Product را با یک Offer تودرتو اضافه کنید که با قیمت و موجودی نمایش‌داده‌شده در صفحه مطابقت داشته باشد، سپس آن را در Rich Results Test گوگل آزمایش کنید.

Google از product snippets برای صفحات محصولی استفاده می‌کند که در آن‌ها امکان خرید مستقیم وجود ندارد و از merchant listings برای صفحاتی که امکان خرید دارند (Google (در زبانه جدید باز می‌شود)). Google به‌طور کلی JSON-LD را توصیه می‌کند (Google (در زبانه جدید باز می‌شود)). برای merchant listings، ویژگی‌های name، image و offers به‌صورت یک Offer الزامی‌اند، با price بالاتر از صفر و priceCurrency در قالب ISO 4217. ویژگی‌های توصیه‌شده عبارت‌اند از availability، gtin، brand، aggregateRating، shippingDetails و hasMerchantReturnPolicy (Google (در زبانه جدید باز می‌شود)). برای واریانت‌ها، Google از ProductGroup همراه با hasVariant، variesBy و productGroupID پشتیبانی می‌کند (Google (در زبانه جدید باز می‌شود)).

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Linen shirt, natural",
  "image": ["https://example.com/images/linen-shirt-1x1.jpg"],
  "sku": "LS-NAT-M",
  "brand": { "@type": "Brand", "name": "Example Store" },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/products/linen-shirt",
    "price": "68.00",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  }
}
</script>

فقط چیزی را نشانه‌گذاری کنید که خریداران می‌بینند؛ Google تضمین نمی‌کند داده ساختاریافته در نتایج نمایش داده شود (Google (در زبانه جدید باز می‌شود)).

  • Shopify: فیلتر {{ product | structured_data }} برای محصولات بدون واریانت یک Product و برای محصولات دارای واریانت یک ProductGroup تولید می‌کند (Shopify (در زبانه جدید باز می‌شود))؛ Dawn آن را در بخش محصول خود دارد. اگر یک اپ نظرات یا سئو نشانه‌گذاری خودش را اضافه می‌کند، موارد تکراری را بررسی کنید.
  • WooCommerce: هسته JSON-LD محصول را در صفحات محصول چاپ می‌کند، شامل SKU، پیشنهادها (offers)، امتیازها در صورت وجود نظرات و GTIN، وقتی فیلد GTIN، UPC، EAN یا ISBN (که در WooCommerce 9.2 (در زبانه جدید باز می‌شود) اضافه شد) پر شده باشد. محصولات متغیری که قیمت متغیرهایشان متفاوت است، یک بازه قیمت AggregateOffer دریافت می‌کنند، مگر اینکه URL یک متغیر را انتخاب کند (کد منبع WooCommerce (در زبانه جدید باز می‌شود))؛ پس آن‌ها را آزمایش کنید، چون merchant listings به Offer نیاز دارند.

برای مرجوعی کالا، Google یک سیاست بازگشت در سطح سازمان را هم در نشانه‌گذاری می‌پذیرد، اما تنظیمات Merchant Center یا Search Console بر آن اولویت دارند (Google (در زبانه جدید باز می‌شود)).

صفحات محصول به کدام تگ‌های Open Graph نیاز دارند؟

صفحات محصول باید og:title، og:type، og:image و og:url را داشته باشند، به‌علاوه og:description و og:image:alt، تا لینک‌های اشتراک‌گذاری‌شده عنوان و عکس درست را نشان دهند.

پروتکل Open Graph این چهار مورد را الزامی می‌داند، og:url را URL canonical تعریف می‌کند و می‌گوید og:image:alt باید همراه هر og:image بیاید (ogp.me (در زبانه جدید باز می‌شود)).

<meta property="og:type" content="product">
<meta property="og:title" content="Linen shirt, natural">
<meta property="og:url" content="https://example.com/products/linen-shirt">
<meta property="og:image" content="https://example.com/images/linen-shirt-1200x630.jpg">
<meta property="og:image:alt" content="Natural linen shirt on a hanger">
<meta property="og:description" content="Relaxed-fit shirt in European linen.">

چرا متن alt برای تصاویر محصول مهم است؟

متن alt به موتورهای جستجو و کاربران صفحه‌خوان می‌گوید تصویر محصول چه چیزی را نشان می‌دهد و Google از آن همراه با بینایی ماشین (computer vision) و محتوای صفحه استفاده می‌کند.

راهنمای تصاویر Google متن alt مفید و مشخص و بدون انباشت کلمات کلیدی می‌خواهد؛ بهترین مثال آن «Dalmatian puppy playing fetch» است، یعنی «توله‌سگ دالمیشن در حال بازی با توپ». Google تصاویر پس‌زمینه CSS را ایندکس نمی‌کند، بنابراین عکس‌های محصول باید در عناصر <img> قرار بگیرند (Google (در زبانه جدید باز می‌شود)). برای یک فروشگاه این یعنی متن alt مانند «پیراهن کتان طبیعی، نمای پشت»، نه «پیراهن پیراهن کتان خرید».

چگونه لینک‌های داخلی شکسته را پیدا و اصلاح کنید؟

فروشگاه خود را خزش (crawl) کنید، لینک‌های داخلی‌ای را که خطای 4xx برمی‌گردانند فهرست کنید و هر لینک را به‌روز کنید یا URL قدیمی را با ریدایرکت 301 به نزدیک‌ترین صفحه فعال هدایت کنید.

Google لینک‌هایی را خزش می‌کند که به‌صورت عنصر <a> با href ساخته شده‌اند و توصیه می‌کند هر صفحه مهم دست‌کم از یک صفحه دیگر لینک داشته باشد (Google (در زبانه جدید باز می‌شود)). URLهایی که کد 4xx برمی‌گردانند ایندکس نمی‌شوند و URLهای ایندکس‌شده حذف می‌شوند؛ ریدایرکت 301 سیگنال قوی و 302 سیگنال ضعیف است (Google (در زبانه جدید باز می‌شود)). لینک‌های فروشگاه وقتی می‌شکنند که محصولات حذف یا تغییر نام داده شوند، handleها تغییر کنند یا کالکشن‌ها کنار گذاشته شوند، در حالی که لینک‌های قدیمی در منوها، توضیحات و پست‌های وبلاگ باقی می‌مانند.

  • Shopify: به Content > Menus > View URL redirects > Create URL redirect بروید. Shopify فقط URLهایی را ریدایرکت می‌کند که واقعاً شکسته باشند (مرکز راهنمای Shopify (در زبانه جدید باز می‌شود)).
  • WooCommerce: هر بار که نامک (slug) یا تنظیمات پیوند یکتا را تغییر می‌دهید، قوانین سرور یا یک افزونه ریدایرکت اضافه کنید.

یک اسکن رایگان بسیاری از این مشکلات را در حدود یک دقیقه شناسایی می‌کند. گزارش رفع مشکلات سئو عنوان‌ها، توضیحات متا، H1ها، canonicalها، noindex، robots.txt، نقشه سایت، داده ساختاریافته Product، Open Graph، متن alt و لینک‌های داخلی شکسته را در حداکثر 25 صفحه بررسی می‌کند و راه‌حل‌های متناسب با پلتفرم شما را ارائه می‌دهد.

پرسش‌های متداول

آیا اصلاح سئو تکنیکال رتبه بهتر را تضمین می‌کند؟

خیر. این اصلاحات دلایلی را برطرف می‌کنند که باعث می‌شوند یک صفحه خزش، ایندکس یا درک نشود؛ رتبه همچنان به مرتبط بودن محتوا (relevance) و بسیاری عوامل دیگر بستگی دارد.

آیا هر واریانت محصول باید URL ایندکس‌شده خودش را داشته باشد؟

بستگی دارد واریانت‌ها چگونه ساخته شده باشند. اگر یک صفحه مشترک دارند و فقط با یک پارامتر کوئری اختیاری از هم متمایز می‌شوند، Google پیشنهاد می‌کند URL بدون پارامتر canonical باشد؛ اگر هر واریانت صفحه خودش را دارد، راهنمای واریانت Google هر صفحه را جداگانه در نظر می‌گیرد.

چرا محصول من با وجود نشانه‌گذاری معتبر، در نتایج غنی (rich results) نمایش داده نمی‌شود؟

Google برای داده ساختاریافته معتبر، نمایش نتایج غنی را تضمین نمی‌کند. بررسی کنید نشانه‌گذاری با محتوای قابل مشاهده مطابقت داشته باشد، از یک Offer با قیمت بالاتر از صفر استفاده کند و در Rich Results Test قبول شود.

آیا باید صفحات کالکشن فیلترشده را در robots.txt مسدود کنم؟

در Shopify، فایل robots.txt پیش‌فرض از قبل URLهای فیلترشده و مرتب‌شده کالکشن‌ها را Disallow می‌کند، چون تکرار صفحات کالکشن هستند. اگر robots.txt.liquid را ویرایش می‌کنید، این قوانین را نگه دارید، مگر اینکه دلیل مشخصی برای تغییرشان داشته باشید.

منابع