مقالات

راهنمای جامع مدیریت تگ کنونیکال (Canonical) در وردپرس: توقف کامل محتوای تکراری

مدیریت تگ کنونیکال

یکی از بزرگ‌ترین چالش‌ها در سئو، «محتوای تکراری» (Duplicate Content) است. این مشکل، اغلب بدون اینکه متوجه باشیم، در ساختار فنی سایت ما، به‌خصوص در وردپرس، پنهان شده و اعتبار صفحات ما را بین چندین URL تقسیم می‌کند. اینجاست که یک تگ HTML ساده اما حیاتی به نام rel=”canonical وارد میدان می‌شود.

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

جدول مقایسه سریع: تگ کنونیکال در برابر ریدایرکت ۳۰۱

قبل از شروع، بیایید تکلیف این دو مفهوم را که اغلب با هم اشتباه گرفته می‌شوند، روشن کنیم:

ویژگی تگ کنونیکال (rel=”canonical”) ریدایرکت ۳۰۱ (Redirect 301)
مخاطب اصلی 🤖 ربات‌های موتور جستجو 🤖 ربات‌ها و 👤 کاربران
تأثیر روی کاربر کاربر در همان URL (کپی) باقی می‌ماند. کاربر بلافاصله به URL جدید (اصلی) منتقل می‌شود.
تأثیر روی URL هر دو URL فعال و قابل مشاهده هستند. URL قدیمی از دسترس خارج و به URL جدید هدایت می‌شود.
سناریوی اصلی مدیریت محتوای تکراری (فیلترها، پارامترها، بازنشر) انتقال دائمی آدرس (تغییر URL، HTTP به HTTPS)
پیام به گوگل «این کپی است، اعتبار را به آن یکی بده.» «من اسباب‌کشی کرده‌ام، لطفاً آدرس جدید را جایگزین کن.»

تگ کنونیکال (rel=”canonical”) چیست و چرا برای سئوی وردپرس حیاتی است؟

تعریف ساده تگ کنونیکال: یک آدرس، چند محتوای مشابه

تگ کنونیکال (Canonical Tag) یک قطعه کد کوتاه HTML است که داخل تگ <head> یک صفحه وب قرار می‌گیرد. وظیفه اصلی‌اش این است که به موتورهای جستجو، به‌خصوص گوگل، بگوید که از بین چند آدرس (URL) که محتوای یکسان یا خیلی مشابهی دارند، کدام یک نسخه اصلی و مرجع است.

بگذارید یک مثال ساده بزنم. فرض کنید شما یک محصول را در فروشگاه وردپرسی خود دارید که از چند آدرس مختلف در دسترس است:

  1. example.com/product/awesome-widget/ (آدرس اصلی)
  2. example.com/shop/awesome-widget/ (از طریق صفحه فروشگاه)
  3. example.com/product/awesome-widget/?color=blue (وقتی کاربر فیلتر رنگ را انتخاب می‌کند)
  4. example.com/product/awesome-widget/?utm_source=instagram (وقتی کاربر از کمپین اینستاگرام می‌آید)

از نظر کاربر، همه این‌ها یک صفحه هستند. اما از نظر گوگل، این‌ها چهار صفحه مجزا با محتوای تکراری (Duplicate Content) محسوب می‌شوند.

اینجاست که تگ کنونیکال وارد می‌شود. ما در کدهای HTML صفحات ۲، ۳ و ۴، یک تگ کنونیکال قرار می‌دهیم که به صفحه شماره ۱ (آدرس اصلی) اشاره می‌کند:

<link rel=”canonical” href=”https://example.com/product/awesome-widget/” />

این تگ به گوگل می‌گوید: «رفیق، اعتبار و رتبه‌بندی تمام این صفحات کپی را جمع کن و همه را به آن آدرس اصلی که گفتم بده.»

گوگل چگونه محتوای تکراری (Duplicate Content) را شناسایی می‌کند؟

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

این مشکل فقط مربوط به کپی کردن مقالات نیست. خیلی وقت‌ها این اتفاق به صورت فنی و ناخواسته رخ می‌دهد، مخصوصاً در سیستم‌هایی مثل وردپرس:

  • پارامترهای URL: این‌ها شایع‌ترین دلیل هستند. مثل کدهای رهگیری کمپین (UTM)، فیلترهای فروشگاه (مثل رنگ، سایز، قیمت) یا شناسه‌های سِشِن (Session IDs).
  • نسخه‌های www و non-www: اگر سایت شما هم با www.example.com و هم با example.com باز شود و یکی به دیگری ریدایرکت نشود.
  • پروتکل‌های HTTP و HTTPS: اگر هر دو نسخه سایت در دسترس باشند، گوگل آن‌ها را دو سایت جداگانه با محتوای تکراری می‌بیند.
  • ساختار URL در وردپرس: گاهی یک پست هم از طریق آدرس ریشه (/post-name/) و هم از طریق دسته‌بندی (/category/post-name/) در دسترس است.
  • صفحات مخصوص پرینت: نسخه‌های printable صفحات.

گوگل وقتی با این موارد مواجه می‌شود، گیج می‌شود که کدام نسخه را باید ایندکس کند و اعتبار را به کدام بدهد.

تأثیر مستقیم محتوای تکراری بر رتبه‌بندی و بودجه خزش (Crawl Budget)

خیلی‌ها فکر می‌کنند محتوای تکراری منجر به «جریمه» (Penalty) مستقیم از سوی گوگل می‌شود. واقعیت این است که جریمه دستی (Manual Action) برای این مورد نادر است، مگر اینکه قصد تقلب و اسپم واضحی در کار باشد.

اما تأثیر منفی واقعی و فنی آن بسیار جدی‌تر است:

  1. تقسیم اعتبار و رتبه‌بندی (Link Dilution): این بزرگ‌ترین ضربه‌ای است که می‌خورید. فرض کنید صفحه A (اصلی) و صفحه B (کپی) دارید. ۱۰ نفر به صفحه A لینک می‌دهند و ۵ نفر (ندانسته) به صفحه B لینک می‌دهند. به جای اینکه گوگل هر ۱۵ بک‌لینک را برای یک صفحه حساب کند، اعتبار را بین این دو صفحه تقسیم می‌کند. در نتیجه، قدرت هیچ‌کدام از صفحات به اندازه‌ای نمی‌شود که بتواند رتبه خوبی بگیرد.
  2. هدر رفتن بودجه خزش (Crawl Budget): بودجه خزش، مقدار زمانی است که ربات‌های گوگل برای بررسی (Crawl) سایت شما اختصاص می‌دهند. وقتی گوگل مجبور است ۵ نسخه مختلف از یک صفحه را بخزد تا بفهمد کدام اصلی است، در واقع دارد این بودجه ارزشمند را هدر می‌دهد. این ربات‌ها می‌توانستند به جای خزش این صفحات تکراری، آن مقاله جدید و مهمی که تازه منتشر کرده‌اید را پیدا و ایندکس کنند.
  3. ایندکس شدن URL اشتباه: در نهایت، اگر شما به گوگل نگویید کدام نسخه اصلی است، خود گوگل یکی را انتخاب می‌کند. اغلب هم ممکن است نسخه‌ای را انتخاب کند که شما نمی‌خواهید، مثلاً نسخه‌ای با پارامترهای UTM (?utm_source=…) که ظاهری زشت و غیرحرفه‌ای در نتایج جستجو دارد.

تفاوت کلیدی تگ کنونیکال با ریدایرکت ۳۰۱ (چه زمانی از کدام استفاده کنیم؟)

این یکی از پرتکرارترین سوالات در سئو است. هم کنونیکال و هم ریدایرکت ۳۰۱ اعتبار را منتقل می‌کنند، اما کاربردشان کاملاً متفاوت است.

  • ریدایرکت ۳۰۱ (انتقال دائمی):
    • کاربرد: برای کاربران و ربات‌ها.
    • چطور کار می‌کند: مثل «اسباب‌کشی» کامل است. شما به مرورگر و گوگل می‌گویید: «من از آدرس A برای همیشه به آدرس B منتقل شده‌ام. لطفاً دیگر سراغ A نیا. هر کاربری هم که به A آمد، او را مستقیماً به B بفرست.»
    • نتیجه: کاربر هرگز آدرس A را نمی‌بیند و بلافاصله به آدرس B پرتاب می‌شود. آدرس A در نهایت از ایندکس گوگل حذف می‌شود.
    • زمان استفاده:
      • وقتی آدرس یک صفحه را برای همیشه تغییر می‌دهید (مثلاً اسلاگ URL را عوض می‌کنید).
      • وقتی سایتی را از HTTP به HTTPS منتقل می‌کنید.
      • وقتی می‌خواهید نسخه‌های www و non-www را یکی کنید.
      • وقتی یک صفحه را حذف می‌کنید و می‌خواهید کاربر به نزدیک‌ترین صفحه مرتبط برود.
  • تگ کنونیکال (rel=”canonical”):
    • کاربرد: فقط یک «سیگنال» برای ربات‌ها.
    • چطور کار می‌کند: مثل «ارجاع دادن» است. شما به گوگل می‌گویید: «ببین، آدرس A و B هر دو موجود هستند و کاربر می‌تواند هر دو را ببیند و استفاده کند. اما از نظر سئو، B فقط یک نسخه فرعی از A است. پس لطفاً اعتبار را به A بده.»
    • نتیجه: کاربر در همان آدرس B (مثلاً صفحه فیلتر شده) باقی می‌ماند و منتقل نمی‌شود. اما گوگل اعتبار را پشت صحنه به آدرس A می‌دهد.
    • زمان استفاده:
      • صفحات فیلتردار فروشگاه: (مثلاً ?color=blue یا ?sort=price). کاربر باید صفحه فیلتر شده را ببیند، اما اعتبار باید به صفحه اصلی دسته‌بندی برود.
      • پارامترهای رهگیری (UTM): برای کمپین‌های تبلیغاتی.
      • محتوای سندیکایی (Syndicated Content): وقتی مقاله شما در سایت دیگری هم بازنشر می‌شود، آن سایت باید به مقاله شما در سایت خودتان کنونیکال بزند.
      • نسخه‌های AMP یا نسخه‌های مخصوص پرینت.

خلاصه کلیدی: اگر می‌خواهید کاربر هم منتقل شود، از ریدایرکت ۳۰۱ استفاده کنید. اگر می‌خواهید کاربر در صفحه بماند اما اعتبار سئو به صفحه دیگری منتقل شود، از کنونیکال استفاده کنید.

صفحات دسته‌بندی (Categories) و برچسب‌ها (Tags)

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

مشکل کجاست؟ فرض کنید شما مقاله‌ای درباره «بهترین افزونه سئو وردپرس» نوشته‌اید و آن را در دسته‌بندی «سئو» و همچنین «افزونه‌های وردپرس» قرار می‌دهید. این مقاله (یا خلاصه آن) حالا در دو صفحه آرشیو مختلف ظاهر می‌شود:

  1. example.com/category/seo/
  2. example.com/category/plugins/

اگر مقالات زیادی این همپوشانی را داشته باشند، این صفحات آرشیو می‌توانند بسیار شبیه به هم به نظر برسند. گوگل ممکن است این صفحات را به عنوان محتوای کم‌ارزش یا تکراری در نظر بگیرد.

علاوه بر این، خودِ پست‌ها هم ممکن است از URLهای مختلفی در دسترس باشند (مثلاً example.com/seo/best-plugin/ و example.com/plugins/best-plugin/). اینجاست که اهمیت تنظیم یک ساختار پیوند یکتای (Permalink) درست و استفاده از کنونیکال‌ها مشخص می‌شود.

مشکلات رایج www در مقابل non-www و HTTP در مقابل HTTPS

این یک مشکل کلاسیک در تنظیمات اولیه سایت است. از نظر فنی، این چهار آدرس کاملاً مجزا هستند:

  • http://example.com
  • http://www.example.com
  • https://example.com (نسخه امن و ارجح)
  • https://www.example.com

اگر سرور شما طوری تنظیم نشده باشد که سه نسخه از این‌ها را به صورت دائمی (با ریدایرکت ۳۰۱) به یک نسخه اصلی (معمولاً https://www.example.com یا https://example.com) منتقل کند، گوگل تمام این آدرس‌ها را می‌بیند.

در این حالت، گوگل چهار نسخه از سایت شما را پیدا می‌کند که همگی محتوای یکسانی دارند. این فاجعه است! چون تمام اعتبار و بک‌لینک‌های سایت شما بین چهار نسخه مختلف تقسیم می‌شود.

راه حل: باید در تنظیمات وردپرس (بخش همگانی) نسخه اصلی را مشخص کنید و مهم‌تر از آن، از طریق فایل .htaccess یا تنظیمات هاست، ۳ ریدایرکت ۳۰۱ تنظیم کنید تا همه کاربران و ربات‌ها به نسخه واحد هدایت شوند.

URLهای پارامتری (مانند UTM، فیلترهای فروشگاه ووکامرس)

پارامترها، آن بخش‌هایی از URL هستند که بعد از علامت سوال (?) می‌آیند. آن‌ها برای ردیابی یا فیلتر کردن محتوا استفاده می‌شوند، اما متاسفانه URLهای جدیدی می‌سازند.

  1. پارامترهای UTM (کمپین‌ها): شما یک مقاله در example.com/blog/my-post/ دارید. وقتی آن را در اینستاگرام به اشتراک می‌گذارید، از لینکی مثل این استفاده می‌کنید: example.com/blog/my-post/?utm_source=instagram&utm_medium=social این یک URL جدید با محتوای ۱۰۰٪ یکسان است. اگر این لینک جایی منتشر شود و گوگل آن را ایندکس کند، شما یک محتوای تکراری ساخته‌اید.
  2. فیلترهای ووکامرس (WooCommerce): این مورد در فروشگاه‌ها بسیار شایع است. صفحه دسته‌بندی شما example.com/shop/shirts/ است.
    • کاربر بر اساس رنگ فیلتر می‌کند: …/shirts/?filter_color=blue
    • کاربر بر اساس قیمت مرتب می‌کند: …/shirts/?orderby=price-desc
    • کاربر هر دو را با هم انجام می‌دهد: …/shirts/?filter_color=blue&orderby=price-desc

تمام این URLها یک صفحه را با تغییرات جزئی نشان می‌دهند. اینجاست که تگ کنونیکال حیاتی است. تمام این URLهای پارامتری باید یک تگ کنونیکال داشته باشند که به صفحه اصلی و بدون فیلتر (example.com/shop/shirts/) اشاره کند.

صفحات آرشیو تاریخ و نویسنده

وردپرس به صورت پیش‌فرض، آرشیوهایی بر اساس تاریخ (ماهانه یا سالانه) و بر اساس نویسنده ایجاد می‌کند:

  • example.com/2023/10/ (تمام پست‌های ماه اکتبر ۲۰۲۳)
  • example.com/author/admin/ (تمام پست‌هایی که ادمین نوشته)

اگر شما یک وبلاگ تک‌نویسنده باشید، صفحه آرشیو نویسنده (/author/admin/) دقیقاً مشابه صفحه اصلی بلاگ شما خواهد بود. این یعنی کپی کامل!

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

راه حل: در بسیاری از موارد، به خصوص برای وبلاگ‌های شرکتی یا شخصی، توصیه می‌شود که آرشیوهای تاریخ و (در صورت تک‌نویسنده بودن) آرشیو نویسنده را از طریق افزونه‌های سئو (مثل رنک‌مث یا یواست) noindex کنید یا آن‌ها را به کل غیرفعال کنید تا بودجه خزش شما هدر نرود.

صفحات قابل چاپ (Print-Friendly Pages) و نسخه‌های AMP

این دو مورد، مثال‌های کلاسیکی از استفاده صحیح از تگ کنونیکال هستند.

  1. صفحات قابل چاپ: برخی سایت‌ها نسخه‌ای «مخصوص پرینت» از مقالات خود ارائه می‌دهند که عناصر اضافی مثل سایدبار، منوها و تبلیغات را حذف می‌کند. این نسخه معمولاً URL متفاوتی دارد (مثلاً …/my-post/print/). واضح است که این محتوای تکراری است. صفحه مخصوص پرینت باید تگ کنونیکال به مقاله اصلی (…/my-post/) داشته باشد.
  2. نسخه‌های AMP (Accelerated Mobile Pages): AMP پروژه‌ای (که البته امروزه کمتر محبوب است) برای ساخت نسخه‌های فوق‌سریع و سبک از صفحات وب برای موبایل بود. این نسخه‌ها در URL جداگانه‌ای (مثلاً …/my-post/amp/) سرویس داده می‌شدند. در اینجا، صفحه AMP باید تگ کنونیکال به نسخه اصلی (دسکتاپ/موبایل) داشته باشد و صفحه اصلی هم باید با یک تگ rel=”amphtml” به نسخه AMP اشاره کند تا ارتباط این دو صفحه برای گوگل مشخص شود.

آموزش گام‌به‌گام تنظیم تگ کنونیکال در وردپرس (با افزونه)

خوشبختانه، افزونه‌های سئوی محبوب وردپرس، مدیریت تگ‌های کنونیکال را فوق‌العاده ساده کرده‌اند. در ۹۹٪ موارد، این افزونه‌ها به طور خودکار یک تگ کنونیکال «خود-ارجاع» (Self-Referencing Canonical) برای هر برگه و نوشته ایجاد می‌کنند. یعنی هر صفحه، خودش را به عنوان نسخه اصلی معرفی می‌کند، که این کار کاملاً درست و استاندارد است.

اما گاهی اوقات، شما نیاز دارید که این پیش‌فرض را تغییر دهید (Override کنید). مثلاً زمانی که یک مقاله مهمان را در سایت خود بازنشر می‌کنید و می‌خواهید اعتبار را به مقاله اصلی در سایت مبدأ بدهید. در ادامه، نحوه انجام این کار در سه افزونه محبوب را با هم می‌بینیم.

روش اول: مدیریت کنونیکال با افزونه Yoast SEO

افزونه یواست (Yoast) یکی از قدیمی‌ترین و محبوب‌ترین‌هاست و این کار در آن بسیار ساده است:

  1. به صفحه ویرایش «نوشته» یا «برگه» مورد نظر خود در پیشخوان وردپرس بروید.
  2. به پایین صفحه اسکرول کنید تا به باکس تنظیمات “Yoast SEO” برسید.
  3. در این باکس، تب پیشرفته” (Advanced) را باز کنید.
  4. در این بخش، فیلدی به نام “URL کانونیکال” (Canonical URL) خواهید دید.
  5. به صورت پیش‌فرض، این فیلد خالی است (یعنی از URL همین صفحه استفاده می‌کند).
  6. برای تغییر آن، کافی است URL کامل صفحه‌ای که می‌خواهید به عنوان نسخه اصلی معرفی شود را در این فیلد کپی و پیست کنید (مثلاً: https://example-original.com/original-post/).
  7. صفحه را «به‌روزرسانی» کنید. تمام شد!

روش دوم: تنظیمات پیشرفته کنونیکال در افزونه Rank Math

رنک مث (Rank Math) هم که این روزها محبوبیت زیادی پیدا کرده، این امکان را به راحتی فراهم می‌کند:

  1. وارد صفحه ویرایش نوشته یا برگه دلخواه خود شوید.
  2. روی آیکون “Rank Math” در گوشه بالا سمت چپ (کنار دکمه انتشار) کلیک کنید تا متاباکس آن باز شود.
  3. در متاباکس رنک مث، به تب پیشرفته” (Advanced) بروید (معمولاً آیکون چهارم است).
  4. اولین گزینه‌ای که می‌بینید نشانی کانونیکال” (Canonical URL) است.
  5. در این کادر، آدرس URL صفحه‌ی اصلی و مرجع را وارد کنید.
  6. نوشته را ذخیره یا به‌روزرسانی کنید. رنک مث بلافاصله تگ کنونیکال را در هِدر (Head) صفحه شما جایگزین می‌کند.

تنظیم URL کنونیکال در افزونه All in One SEO

اگر از افزونه AIOSEO استفاده می‌کنید، فرآیند تقریباً مشابه دو افزونه دیگر است:

  1. در صفحه ویرایش نوشته یا برگه، به پایین اسکرول کنید تا به باکس “AIOSEO Settings” برسید.
  2. تب “Advanced” (پیشرفته) را انتخاب کنید.
  3. در این قسمت، فیلدی با عنوان “Canonical URL” (نشانی اینترنتی کانونیکال) وجود دارد.
  4. آدرس URL مرجع خود را در این فیلد وارد نمایید.
  5. فراموش نکنید که در نهایت، نوشته یا برگه را به‌روزرسانی کنید.

چگونه URL کنونیکال پیش‌فرض را برای یک برگه یا نوشته تغییر دهیم؟ (آموزش اورراید کردن)

نکته جالب اینجاست که تمام سه روشی که در بالا توضیح دادم، دقیقاً همان فرآیند «اورراید کردن» (Override) یا «تغییر دادن» کنونیکال پیش‌فرض هستند.

بگذارید ساده‌تر بگویم:

  • حالت پیش‌فرض (Default): وقتی شما آن فیلدهای «URL کانونیکال» را در افزونه‌های سئو خالی می‌گذارید، افزونه به صورت خودکار تگ کنونیکال را روی آدرس همان صفحه‌ای که در آن هستید تنظیم می‌کند. (مثلاً صفحه A به A کنونیکال می‌زند). این همان «کنونیکال خود-ارجاع» است.
  • حالت اورراید (Override): به محض اینکه شما به صورت دستی، آدرسی را در آن فیلد وارد می‌کنید (مثلاً در صفحه B، آدرس صفحه A را در فیلد کنونیکال می‌گذارید)، شما در حال «اورراید کردن» یا «لغو کردن» آن حالت پیش‌فرض هستید.

بنابراین، آموزش اورراید کردن دقیقاً همان کاری است که در مراحل بالا انجام دادیم:

  1. به صفحه ویرایش پست/برگه (مثلاً صفحه B که کپی است) بروید.
  2. به بخش تنظیمات پیشرفته افزونه سئوی خود (Yoast, Rank Math, AIOSEO) بروید.
  3. در فیلد “Canonical URL”، آدرس صفحه اصلی (مثلاً صفحه A که مرجع است) را وارد کنید.
  4. صفحه را ذخیره کنید.

با این کار، شما به گوگل سیگنال می‌دهید که «هی گوگل، این صفحه B که الان داری می‌بینی، نسخه اصلی نیست. لطفاً تمام اعتبار و رتبه را به صفحه A منتقل کن.»

تنظیم دستی تگ کنونیکال در وردپرس (بدون افزونه – روش متخصصان)

استفاده از افزونه‌های سئو (مثل رنک مث یا یواست) واقعاً کار را برای ۹۹٪ درصد سناریوها راحت می‌کند. آن‌ها به طور خودکار بهترین کنونیکال‌ها را مدیریت می‌کنند. اما گاهی اوقات، ما به عنوان متخصص سئو یا توسعه‌دهنده، نیاز به کنترل دقیق‌تر و سفارشی‌سازی‌هایی داریم که شاید در تنظیمات افزونه‌ها پیدا نشود.

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

اضافه کردن تگ rel=”canonical” به هدر (Header) از طریق فایل functions.php

قلب تپنده وردپرس، سیستم «هوک» (Hook) آن است. برای اضافه کردن هر کدی به بخش <head> سایت (جایی که تگ کنونیکال باید قرار بگیرد)، ما از اکشن هوک (Action Hook) به نام wp_head استفاده می‌کنیم.

این هوک دقیقاً قبل از بسته شدن تگ </head> در خروجی HTML سایت شما اجرا می‌شود. ما می‌توانیم یک تابع (Function) سفارشی بنویسیم و آن را به این هوک «قلاب» کنیم.

مهم: این کدها باید همیشه در فایل functions.php قالب فرزند (Child Theme) شما قرار داده شوند.

در اینجا یک مثال ساده برای اضافه کردن یک کنونیکال سفارشی به یک برگه خاص (مثلاً برگه‌ای با ID 123) آورده شده است:

PHP

/*

* اضافه کردن تگ کنونیکال سفارشی به یک برگه خاص

* نویسنده: ادمین

*/

function admin_add_custom_canonical() {

 

// بررسی می‌کنیم که آیا در برگه با شناسه (ID) 123 هستیم

if ( is_page(123) ) {

 

// این آدرس اصلی و مرجع ما است

$canonical_url = ‘https://example.com/the-real-original-page/’;

 

// تگ کنونیکال را چاپ می‌کنیم

// استفاده از esc_url برای امنیت و پاکسازی URL حیاتی است

echo ‘<link rel=”canonical” href=”‘ . esc_url( $canonical_url ) . ‘” />’ . “\n”;

}

}

// تابع خود را به هوک wp_head اضافه می‌کنیم

add_action( ‘wp_head’, ‘admin_add_custom_canonical’ );

استفاده از هوک‌های (Hooks) وردپرس برای تنظیمات سفارشی و شرطی

قدرت واقعی این روش زمانی مشخص می‌شود که از «تگ‌های شرطی» (Conditional Tags) وردپرس استفاده می‌کنیم. مثال بالا (is_page(123)) بسیار ساده بود. ما می‌توانیم این منطق را بسیار هوشمندتر کنیم.

فرض کنید می‌خواهیم به طور خودکار برای تمام URLهایی که پارامتر فیلتر (?filter_color=…) دارند، تگ کنونیکال را به آدرس اصلی همان دسته‌بندی (بدون پارامتر) تنظیم کنیم.

PHP

/*

* تنظیم کنونیکال هوشمند برای صفحات فیلتردار ووکامرس

* نویسنده: ادمین

*/

function admin_fix_filter_canonical() {

 

// ۱. چک می‌کنیم که در صفحه آرشیو دسته‌بندی محصولات ووکامرس باشیم

// ۲. و چک می‌کنیم که پارامتری مثل ‘filter_color’ در URL وجود داشته باشد

if ( is_product_category() && isset( $_GET[‘filter_color’] ) ) {

 

// آدرس URL تمیز و بدون پارامترِ دسته‌بندی فعلی را می‌گیریم

$term_link = get_term_link( get_queried_object() );

 

// اگر خطایی در گرفتن آدرس وجود نداشت

if ( ! is_wp_error( $term_link ) ) {

 

// تگ کنونیکال را به آدرس تمیز ارجاع می‌دهیم

echo ‘<link rel=”canonical” href=”‘ . esc_url( $term_link ) . ‘” />’ . “\n”;

}

}

}

// با اولویت (Priority) 1 اجرا می‌کنیم تا قبل از کدهای دیگر (شاید خود ووکامرس) اجرا شود

add_action( ‘wp_head’, ‘admin_fix_filter_canonical’, 1 );

با این کد، ما به صورت پویا مشکل محتوای تکراری ناشی از فیلترها را حل کرده‌ایم.

هشدار: خطرات و معایب ویرایش دستی کدها (چه زمانی این کار را نکنیم؟)

خب، اینجا باید به عنوان یک همراه متخصص، خیلی جدی و واقع‌بینانه در مورد خطرات این کار صحبت کنیم. ویرایش دستی کدها، به خصوص فایل functions.php، شبیه راه رفتن روی لبه تیغ است.

  1. خطر صفحه سفید مرگ (WSoD): این بزرگ‌ترین خطر است. اگر فقط یک ویرگول (;) یا پرانتز را در کد PHP جا بیندازید یا اشتباه تایپی داشته باشید، کل سایت شما ممکن است با «خطای مرگبار» (Fatal Error) مواجه شده و کاملاً از دسترس خارج شود (صفحه سفید).
  2. تداخل با افزونه‌های سئو: این مهم‌ترین نکته سئویی است. اگر شما افزونه‌ای مثل رنک مث یا یواست نصب کرده باشید، آن افزونه هم به طور خودکار یک تگ کنونیکال به صفحات اضافه می‌کند. اگر شما هم دستی یک تگ دیگر اضافه کنید، در سورس کد صفحه دو تگ کنونیکال خواهید داشت. این وضعیت برای گوگل بسیار گیج‌کننده است و تأثیر منفی آن به مراتب بدتر از نداشتن کنونیکال است.
  3. مشکل در آپدیت‌های قالب: اگر این کدها را در فایل functions.php قالب اصلی (Parent Theme) قرار دهید (نه قالب فرزند)، به محض اینکه قالب خود را آپدیت کنید، تمام تغییرات شما پاک خواهد شد.
  4. سختی نگهداری: کدهای سفارشی نیاز به نگهداری دارند. شاید شش ماه دیگر فراموش کنید که این کد را برای چه هدفی اضافه کرده‌اید و با آپدیت‌های وردپرس یا ووکامرس دچار تداخل شود.

چه زمانی این کار را نکنیم؟

  • اگر مبتدی هستید: لطفاً اصلاً به این روش فکر هم نکنید. ریسک آن بسیار بالاست.
  • اگر افزونه سئو دارید: به احتمال ۹۹.۹٪ می‌توانید نیاز خود را از طریق تنظیمات پیشرفته همان افزونه (که در بخش قبلی دیدیم) برطرف کنید.
  • اگر از قالب فرزند (Child Theme) استفاده نمی‌کنید: ابتدا یک قالب فرزند بسازید و بعد به فکر ویرایش کد باشید.

در مجموع، این روش «متخصصان» فقط برای زمانی است که شما دقیقاً می‌دانید چه می‌کنید، از عواقب آن آگاه هستید و سناریوی شما آنقدر خاص است که افزونه‌های موجود پاسخی برای آن ندارند.

مدیریت سناریوهای پیچیده کنونیکال (راه حل‌های تخصصی)

خب، اینجا وارد مباحثی می‌شویم که تفاوت بین یک کارشناس سئوی معمولی و یک متخصص سئوی فنی (Technical SEO) را مشخص می‌کند. این سناریوها جایی هستند که اگر اشتباه مدیریت شوند، می‌توانند آسیب جدی به ساختار سایت بزنند. بیایید آن‌ها را با هم مرور کنیم.

استراتژی کنونیکال برای صفحات آرشیو و صفحه‌بندی (Pagination)

صفحه‌بندی (مثل صفحات page/2/, page/3/ در بلاگ یا دسته‌بندی‌ها) یکی از چالش‌برانگیزترین بخش‌های سئوی فنی است. سال‌ها پیش، گوگل استفاده از تگ‌های rel=”next” و rel=”prev” را توصیه می‌کرد، اما در سال ۲۰۱۹ رسماً اعلام کرد که دیگر از آن‌ها استفاده نمی‌کند.

حالا استراتژی درست چیست؟

  1. استراتژی اصلی: استفاده از کنونیکال خود-ارجاع (Self-Referencing Canonical) این بهترین و مورد تاییدترین روش فعلی است. در این روش:
    • صفحه اول دسته‌بندی (/category/seo/) به خودش کنونیکال می‌زند.
    • صفحه دوم (/category/seo/page/2/) به خودش (…/page/2/) کنونیکال می‌زند.
    • صفحه سوم (/category/seo/page/3/) به خودش (…/page/3/) کنونیکال می‌زند.
    • و…

چرا این کار درست است؟ چون هر صفحه از سری صفحات صفحه‌بندی شده، محتوای منحصربه‌فردی (لیست متفاوتی از پست‌ها) را ارائه می‌دهد. ما به گوگل می‌گوییم که این یک «سری» از صفحات مرتبط است و هر صفحه بخشی از این مجموعه است. این کار به گوگل کمک می‌کند تا تمام صفحات را بخزد و پست‌های قدیمی‌تر را هم از طریق این صفحات پیدا (Discover) کند.

  1. باور غلط رایج: یک اشتباه مهلک که قبلاً رایج بود، این بود که تمام صفحات صفحه‌بندی شده (page/2, page/3, …) را به صفحه اول (/category/seo/) کنونیکال می‌کردند. چرا این فاجعه است؟ این کار به گوگل سیگنال می‌دهد که صفحات ۲، ۳ و ۴ هیچ ارزشی ندارند و کپی صفحه ۱ هستند. در نتیجه، گوگل از خزش آن‌ها دست می‌کشد و تمام مقالات و محصولاتی که در آن صفحات بودند، دیگر از طریق ساختار سایت قابل دسترسی نیستند و به مرور «یتیم» شده و اعتبار خود را از دست می‌دهند.

استفاده از کنونیکال بین‌دامنه‌ای (Cross-Domain Canonical) برای محتوای بازنشر شده

این یکی از قدرتمندترین کاربردهای تگ کنونیکال است. فرض کنید شما یک مقاله عالی در سایت خودتان (سایت A) منتشر کرده‌اید. حالا یک وب‌سایت بسیار معتبر دیگر (سایت B) می‌خواهد مقاله شما را بازنشر (Syndicate) کند.

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

راه حل (کنونیکال بین‌دامنه‌ای): شما از مدیر سایت B می‌خواهید که مقاله‌ی بازنشر شده در سایت خود را، با استفاده از تگ کنونیکال، به مقاله اصلی در سایت شما (سایت A) ارجاع دهد.

  • کد در هدر سایت B (site-b.com/republished-post/): <link rel=”canonical” href=”https://site-a.com/original-post/” />

نتیجه: این یک سناریوی برد-برد است.

  1. سایت B محتوای باکیفیت برای مخاطبانش دریافت می‌کند.
  2. سایت A (شما) تمام اعتبار سئو، رتبه‌بندی و بک‌لینک‌های احتمالی را از طرف گوگل دریافت می‌کند، انگار که تمام این اعتبار مستقیماً به سایت شما داده شده است. گوگل متوجه می‌شود که شما منبع و مرجع اصلی این محتوا هستید.

مدیریت کنونیکال در فروشگاه‌های ووکامرس (محصولات با متغیرها و فیلترها)

اینجا دو سناریوی متفاوت داریم:

  1. محصولات متغیر (Variable Products): فرض کنید یک «تیشرت» دارید که در ۳ رنگ (آبی، قرمز، سبز) موجود است. وقتی کاربر رنگ را انتخاب می‌کند، URL ممکن است تغییر کند (مثلاً: …/tshirt/?attribute_pa_color=blue).
    • راه حل: تمام این URLهای متغیر (آبی، قرمز، سبز) باید به صفحه «محصول اصلی» (بدون انتخاب متغیر، مثلاً …/tshirt/) کنونیکال بزنند. چون اصلِ محصول یکی است و فقط یک ویژگی جزئی آن تغییر کرده است. افزونه ووکامرس و افزونه‌های سئو معمولاً این کار را به درستی مدیریت می‌کنند.
  2. فیلترها و مرتب‌سازی در صفحات دسته‌بندی: این مورد بسیار شبیه به چیزی است که قبلاً گفتیم. وقتی کاربر در صفحه دسته‌بندی «پوشاک» (/category/clothing/)، نتایج را بر اساس قیمت (?orderby=price) یا رنگ (?filter_color=red) فیلتر می‌کند:
    • راه حل: تمام این URLهای پارامتری و فیلتر شده باید به صفحه اصلی و تمیزِ دسته‌بندی (/category/clothing/) کنونیکال بزنند.
    • چرا؟ چون ما نمی‌خواهیم گوگل ۱۰ نسخه مختلف از صفحه دسته‌بندی ما (یکی برای هر رنگ، یکی برای هر نوع مرتب‌سازی) را ایندکس کند. ما می‌خواهیم تمام اعتبار به یک صفحه دسته‌بندی اصلی و قدرتمند منتقل شود.

آیا باید صفحات “noindex” را کنونیکال کرد؟ (پاسخ به یک باور غلط)

این یک سوال تخصصی عالی و بسیار مهم است. پاسخ کوتاه: نه، این کار اشتباه است و سیگنال‌های متناقضی به گوگل می‌دهد.

بگذارید این دو تگ را جداگانه بررسی کنیم:

  • rel=”canonical”: این تگ به گوگل می‌گوید: «این صفحه یک کپی از صفحه X است. لطفاً اعتبار آن را به صفحه X منتقل کن.» (این یک سیگنال است)
  • meta name=”robots” content=”noindex”: این تگ به گوگل می‌گوید: «تحت هیچ شرایطی این صفحه را در نتایج جستجوی خود نشان نده.» (این یک دستور است)

مشکل کجاست؟ وقتی شما هر دوی این‌ها را در یک صفحه قرار می‌دهید، در واقع به گوگل می‌گویید: «گوگل عزیز، لطفاً این صفحه را ایندکس نکن (دستور Noindex). ضمناً، حالا که اینجا هستی، این را هم بدان که این صفحه کپیِ صفحه X است و اعتبارش را به آن منتقل کن (دستور Canonical).»

جان مولر (از گوگل) بارها تاکید کرده که این دو سیگنال با هم در تضاد هستند. گوگل در نهایت گیج می‌شود و معمولاً سیگنال noindex را بر canonical ترجیح می‌دهد (چون قوی‌تر است). در نتیجه، گوگل صفحه را noindex می‌کند، اما چون دستور noindex را اجرا کرده، دیگر به سیگنال کنونیکال و انتقال اعتبار اهمیتی نمی‌دهد. در نتیجه شما نه صفحه را ایندکس کرده‌اید و نه اعتبارش را منتقل کرده‌اید (بدترین حالت ممکن).

قانون طلایی:

  • اگر صفحه‌ای کپی است و می‌خواهید اعتبارش منتقل شود، فقط از کنونیکال استفاده کنید.
  • اگر صفحه‌ای بی‌ارزش است (مثل صفحه تشکر از خرید، صفحه ورود) و نمی‌خواهید اصلاً در گوگل باشد و اعتباری هم برای انتقال ندارد، فقط از noindex استفاده کنید.
  • هرگز از این دو با هم در یک صفحه استفاده نکنید.

اشتباهات رایج در مدیریت تگ کنونیکال که رتبه شما را نابود می‌کند

تگ کنونیکال یکی از آن ابزارهای قدرتمند سئوی فنی است که اگر درست استفاده شود، معجزه می‌کند و اگر اشتباه پیاده‌سازی شود، می‌تواند بخش بزرگی از زحمات شما را هدر دهد. در طول تجربه‌ام، بارها دیده‌ام که اشتباهات ساده در تنظیم کنونیکال، چطور باعث سردرگمی گوگل و افت رتبه سایت‌ها شده.

بیایید چند مورد از این خطاهای رایج و «نابودکننده رتبه» را با هم مرور کنیم:

خطای ۱: استفاده از URL نسبی (Relative) به جای مطلق (Absolute)

این یک اشتباه فنی اما بسیار رایج است. اول بگذارید تفاوت این دو را سریع بگویم:

  • URL مطلق (Absolute): آدرس کامل و دقیق صفحه، شامل پروتکل (https) و دامنه.
    • مثال: https://vazirseo.com/blog/what-is-canonical/
  • URL نسبی (Relative): فقط بخشی از آدرس، بدون دامنه.
    • مثال: /blog/what-is-canonical/

مشکل کجاست؟ گوگل در مستندات رسمی خود به صراحت تاکید کرده که در تگ کنونیکال فقط از URLهای مطلق استفاده کنید.

وقتی شما از آدرس نسبی استفاده می‌کنید، ابهام ایجاد می‌کنید. این آدرس نسبی ممکن است توسط ربات‌های گوگل به اشتباه تفسیر شود. مثلاً ممکن است ربات، آن را روی زیردامنه اشتباهی (مثل subdomain.example.com) یا روی نسخه http به جای httpsa تفسیر کند.

این ابهام باعث می‌شود سیگنال کنونیکال شما نادیده گرفته شود یا بدتر، به آدرس اشتباهی اشاره کند.

  • غلط (نسبی): <link rel=”canonical” href=”/my-page/” />
  • درست (مطلق): <link rel=”canonical” href=”https://example.com/my-page/” />

خطای ۲: ایجاد زنجیره کنونیکال (Canonical Chains)

«زنجیره کنونیکال» زمانی اتفاق می‌افتد که شما سیگنال‌ها را پشت سر هم ردیف می‌کنید.

  • صفحه A به صفحه B کنونیکال می‌زند.
  • صفحه B به صفحه C کنونیکال می‌زند.
  • صفحه C به صفحه D کنونیکال می‌زند.

این کار مثل بازی «تلفن شکسته» است. شما ربات گوگل را مجبور می‌کنید که برای پیدا کردن نسخه اصلی، چند صفحه را پشت سر هم دنبال کند.

مشکل کجاست؟

  1. هدر رفتن بودجه خزش: گوگل برای هر پرش در این زنجیره، بخشی از بودجه خزش خود را مصرف می‌کند و ممکن است قبل از رسیدن به مقصد نهایی (صفحه D)، خسته شده و فرآیند را رها کند.
  2. ضعیف شدن سیگنال: در هر مرحله از این زنجیره، مقداری از اعتبار (Link Equity) هدر می‌رود. سیگنالی که در نهایت به صفحه D می‌رسد، بسیار ضعیف‌تر از حالتی است که A، B و C مستقیماً به D اشاره کنند.

راه حل درست: همیشه مستقیماً به منبع اصلی اشاره کنید.

  • صفحه A -> کنونیکال به D
  • صفحه B -> کنونیکال به D
  • صفحه C -> کنونیکال به D

خطای ۳: کنونیکال کردن تمام صفحات آرشیو به صفحه اصلی (یک اشتباه فاجعه‌بار)

این اشتباهی است که متاسفانه در گذشته توسط برخی افزونه‌ها یا آموزش‌های قدیمی‌تر توصیه می‌شد.

سناریوی فاجعه‌بار:

  • صفحه دوم بلاگ (/blog/page/2/) -> کنونیکال به /blog/
  • صفحه سوم بلاگ (/blog/page/3/) -> کنونیکال به /blog/
  • و حتی بدتر: صفحه دسته‌بندی (/category/seo/) -> کنونیکال به صفحه اصلی (/)

مشکل کجاست؟ وقتی شما این کار را می‌کنید، به گوگل یک پیام واضح می‌دهید: «تمام این صفحات (صفحه ۲، ۳، ۴ و…) همگی کپی صفحه ۱ هستند و هیچ محتوای جدیدی ندارند.»

نتیجه چیست؟ گوگل خزش این صفحات را متوقف می‌کند. چون فکر می‌کند بی‌ارزش و تکراری هستند. وقتی گوگل خزش صفحات page/2/ و page/3/ را متوقف کند، دیگر هرگز مقالات قدیمی‌تر شما را که در آن صفحات لینک شده‌اند، پیدا نخواهد کرد.

شما عملاً با دست خودتان، تمام محتوای قدیمی‌تر سایت را از دسترس گوگل خارج و «یتیم» (Orphan) می‌کنید و باعث می‌شوید اعتبارشان را به طور کامل از دست بدهند.

راه حل درست: (همانطور که قبلاً گفتیم) هر صفحه از سری صفحات صفحه‌بندی شده، باید به خودش کنونیکال بزند (Self-Referencing).

خطای ۴: تضاد سیگنال (مثلاً کنونیکال به یک URL که Noindex یا مسدود است)

شما باید به گوگل سیگنال‌های واضح و یکپارچه بدهید. تضاد در سیگنال‌ها، گوگل را گیج می‌کند و باعث می‌شود به تمام دستورات شما بی‌اعتماد شود.

اینجا چند مثال از تضاد سیگنال داریم:

  1. کنونیکال به صفحه Noindex: شما در صفحه A هستید و آن را به صفحه B کنونیکال می‌کنید. اما صفحه B دارای تگ noindex است.
    • پیام شما به گوگل: «لطفاً اعتبار صفحه A را به B منتقل کن، صفحه‌ای که به تو دستور داده‌ام آن را ایندکس نکنی!» این یک دستور متناقض و بی‌معنی است.
  2. کنونیکال به صفحه مسدود شده (Blocked by robots.txt): شما صفحه A را به B کنونیکال می‌زنید، اما صفحه B در فایل robots.txt مسدود شده است (Disallow).
    • پیام شما به گوگل: «اعتبار را به صفحه‌ای منتقل کن که به تو اجازه نمی‌دهم آن را بخزی (Crawl) و محتوایش را ببینی.» گوگل نمی‌تواند اعتباری را به صفحه‌ای که اجازه دیدنش را ندارد، منتقل کند.
  3. کنونیکال به صفحه ۴۰۴ (Not Found): شما به صفحه‌ای کنونیکال می‌زنید که اصلاً وجود ندارد (حذف شده و خطای ۴۰۴ می‌دهد).
    • پیام شما به گوگل: «اعتبار را به یک بن‌بست منتقل کن.» نتیجه‌اش مشخص است: تمام اعتبار صفحه A از دست می‌رود.

قانون کلی: مقصد تگ کنونیکال (URL هدف) باید همیشه یک صفحه سالم (کد ۲۰۰)، قابل خزش (Crawlable)، قابل ایندکس (Indexable) و نسخه اصلی محتوا باشد.

بررسی و عیب‌یابی (Audit) تگ‌های کنونیکال در سایت وردپرسی

خب، بعد از اینکه تمام تنظیمات را انجام دادیم، چطور مطمئن شویم که همه‌چیز درست کار می‌کند و خطایی در کار نیست؟ این مرحله «آدیت» یا «عیب‌یابی» (Audit) به اندازه خودِ پیاده‌سازی اهمیت دارد. اگر سیگنال اشتباهی بفرستیم، ممکن است گوگل گیج شود.

خوشبختانه سه روش عالی برای این کار داریم: از بررسی دستی و سریع گرفته تا تحلیل کامل و مقیاس‌پذیر.

بررسی دستی سورس کد (View Page Source)

این سریع‌ترین و دم‌دستی‌ترین روش برای یک «بررسی نقطه‌ای» (Spot-Check) است.

  1. به صفحه‌ای از سایتتان که می‌خواهید آن را بررسی کنید بروید (مثلاً یک مقاله، یک صفحه دسته‌بندی، یا یک URL فیلتر شده).
  2. در یک جای خالی از صفحه کلیک راست کرده و گزینه “View Page Source” را انتخاب کنید. (یا خیلی ساده، کلیدهای Ctrl+U را فشار دهید).
  3. یک صفحه جدید با کدهای HTML صفحه شما باز می‌شود.
  4. در این صفحه، کلیدهای Ctrl+F را بزنید تا نوار جستجو باز شود.
  5. عبارت canonical را جستجو کنید.

حالا باید به دنبال تگ <link rel=”canonical” … /> بگردید. وقتی پیدایش کردید، این موارد را چک کنید:

  • آیا اصلاً وجود دارد؟ (نبودنش برای صفحات اصلی خوب نیست).
  • آیا فقط یکی است؟ (وجود دو یا چند تگ کنونیکال یک خطای جدی است).
  • آدرس (href) آن چیست؟ آیا دقیقاً همان آدرسی است که شما انتظار دارید؟
  • آیا آدرس «مطلق» (Absolute) است؟ یعنی با https:// شروع شده و کامل است؟ (نباید نسبی مثل /my-page/ باشد).

این روش برای چک کردن سریع چند صفحه کلیدی عالی است.

استفاده از ابزار Google Search Console (گزارش Page Indexing)

این روش به ما می‌گوید که گوگل در عمل سیگنال ما را چطور دیده و تفسیر کرده است. این داده، مستقیم از خود گوگل می‌آید و بسیار ارزشمند است.

  1. وارد حساب کاربری گوگل سرچ کنسول (Google Search Console) سایت خود شوید.
  2. در نوار جستجوی بالا (که نوشته “Inspect any URL in…”)، آدرس صفحه‌ای که می‌خواهید بررسی کنید را وارد کرده و Enter را بزنید.
  3. ابزار، اطلاعات صفحه را از گوگل فراخوانی می‌کند.
  4. در بخش “Indexing” (ایندکس‌گذاری)، به دو بخش کلیدی دقت کنید:
    • User-declared canonical (کنونیکال اعلام‌شده توسط کاربر): این آدرسی است که شما در تگ کنونیکال خود (مثلاً با افزونه) تنظیم کرده‌اید.
    • Google-selected canonical (کنونیکال انتخاب‌شده توسط گوگل): این آدرسی است که گوگل، پس از بررسی همه سیگنال‌ها (کنونیکال، ریدایرکت‌ها، لینک‌های داخلی و…)، به عنوان نسخه اصلی انتخاب کرده است.

نقطه طلایی: در یک سایت سالم، برای ۹۹٪ صفحات، این دو آدرس باید یکسان باشند.

اگر دیدید که «کنونیکال انتخاب‌شده توسط گوگل» با چیزی که شما اعلام کرده‌اید متفاوت است (مثلاً به صفحه دیگری اشاره می‌کند یا نوشته “N/A”)، یعنی گوگل سیگنال شما را نپذیرفته و مشکلی در استراتژی شما وجود دارد.

ابزارهای خزشگر سئو (مانند Screaming Frog) برای یافتن خطاهای کنونیکال

بررسی دستی و سرچ کنسول برای بررسی تکی صفحات عالی هستند. اما اگر بخواهیم کلِ یک سایت ۱۰,۰۰۰ صفحه‌ای را برای خطاهای کنونیکال بررسی کنیم چه؟ اینجا پای خزشگرهای (Crawlers) حرفه‌ای سئو به میان می‌آید.

ابزار Screaming Frog SEO Spider (نسخه رایگان تا ۵۰۰ URL را می‌خزد) بهترین ابزار دسکتاپ برای این کار است.

  1. آدرس سایت خود را در Screaming Frog وارد کرده و دکمه “Start” را می‌زنید. ابزار شروع به خزش تمام صفحات سایت شما، درست مثل ربات گوگل، می‌کند.
  2. پس از اتمام خزش، به تب “Canonicals” بروید.
  3. اینجا گنجینه‌ای از اطلاعات برای عیب‌یابی در اختیار شماست.

شما می‌توانید با استفاده از فیلترهای این بخش، به سرعت خطاهای رایج را پیدا کنید:

  • Missing (گمشده): صفحاتی که اصلاً تگ کنونیکال ندارند.
  • Multiple (چندگانه): صفحاتی که به اشتباه بیش از یک تگ کنونیکال دارند.
  • Canonicalized (کنونیکال شده): لیستی از تمام صفحاتی که به یک URL دیگر کنونیکال می‌زنند (باید این لیست را بررسی کنید تا مطمئن شوید تمام این ارجاع‌ها عمدی و درست بوده‌اند).
  • Canonical to Non-Indexable: فاجعه! صفحاتی که به یک URL مسدود شده (با robots.txt)، Noindex شده، ۴۰۴ یا ریدایرکتی اشاره می‌کنند.
  • Canonical Chains: زنجیره‌های کنونیکال (A به B و B به C) را پیدا می‌کند.

استفاده از یک خزشگر، تنها راه مطمئن برای آدیت کامل و فنی تگ‌های کنونیکال در مقیاس بزرگ است و به شما یک دید کامل از سلامت فنی سایت می‌دهد.

جمع‌بندی: کنونیکال، سیگنال اعتماد شما به گوگل

همان‌طور که با هم دیدیم، تگ کنونیکال ابزار ظریف اما بسیار قدرتمندی در جعبه ابزار سئوی ماست. این تگ، یک «دستور» (Directive) مطلق نیست، بلکه یک «سیگنال» (Signal) قوی و راهنما برای گوگل است. ما با استفاده درست از آن، به گوگل کمک می‌کنیم تا ساختار سایت ما را بهتر درک کند، اعتبار را در یک صفحه واحد متمرکز کند و بودجه خزش ارزشمند خود را صرف صفحات تکراری نکند.

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

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

author-avatar

درباره حسین محمودی

سئو رو از روی علاقه شروع کردم و توی این ۱ سال و نیم یاد گرفتم که موفقیت فقط با یادگیری مداوم اتفاق می‌افته. من همیشه دنبال بهترین راه برای دیده‌شدن کسب‌وکارها هستم؛ بدون حاشیه و با تمرکز روی نتیجه.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *