rel="canonical": وقتی یک محتوا از چند در وارد می‌شه

تو درس ۱۱-۱ یه اشاره‌ی کوتاه به تگ canonical داشتیم و گفتیم این تگ به گوگل کمک می‌کنه نسخه‌ی اصلی یه محتوا رو تشخیص بده. حالا وقتشه کامل بریم سراغش، چون این یکی از مهم‌ترین و در عین حال کم‌فهمیده‌شده‌ترین ابزارهای سئوی فنیه.

مشکل اصلی: محتوای تکراری (Duplicate Content)

فرض کن یه صفحه‌ی محصول داری که از چند آدرس مختلف قابل‌دسترسیه:

https://example.com/products/shoes
https://www.example.com/products/shoes
https://example.com/products/shoes?color=black
https://example.com/products/shoes/

از دید کاربر، همه‌ی این آدرس‌ها همون محصول رو نشون می‌دن. اما از دید گوگل، این‌ها چهار تا آدرس URL کاملاً متفاوتن؛ و اگه گوگل محتوای یکسانی رو از چند آدرس مختلف ببینه، این وضعیت رو «محتوای تکراری» در نظر می‌گیره. این باعث می‌شه اعتبار سئو (که معمولاً بهش Link Equity می‌گن) بین این چند آدرس پخش بشه، به‌جای اینکه همه‌ش روی یه آدرس واحد متمرکز بشه؛ نتیجه‌ش معمولاً رتبه‌بندی ضعیف‌تر از چیزیه که این محتوا واقعاً لیاقتش رو داره.

راه‌حل: تگ rel="canonical"

<link rel="canonical" href="https://example.com/products/shoes">

با گذاشتن این تگ تو head هر نسخه از این صفحه (حتی خود نسخه‌ی اصلی)، به گوگل می‌گی «فارغ از اینکه این محتوا رو از کدوم آدرس دیدی، نسخه‌ی رسمی و اصلیش دقیقاً همینه». گوگل این پیام رو جدی می‌گیره و تمام اعتبار سئو رو روی همون آدرس canonical متمرکز می‌کنه.

یه نکته‌ی مهم: canonical باید تو همه‌ی نسخه‌ها یکسان باشه

<!-- تو صفحه‌ی https://example.com/products/shoes?color=black -->
<link rel="canonical" href="https://example.com/products/shoes">

<!-- تو صفحه‌ی https://www.example.com/products/shoes -->
<link rel="canonical" href="https://example.com/products/shoes">

<!-- تو خود صفحه‌ی اصلی https://example.com/products/shoes -->
<link rel="canonical" href="https://example.com/products/shoes">

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

چند سناریوی رایج که به canonical نیاز داره

۱. تفاوت www و بدون www

<!-- تو https://www.example.com -->
<link rel="canonical" href="https://example.com">

خیلی از سایت‌ها هم با www و هم بدون www در دسترسن. باید یکی رو به‌عنوان نسخه‌ی اصلی انتخاب کنی و بقیه رو بهش canonical کنی.

۲. پارامترهای ردیابی یا فیلتر تو URL

<!-- تو https://example.com/shoes?utm_source=instagram -->
<link rel="canonical" href="https://example.com/shoes">

وقتی یه لینک از یه کمپین تبلیغاتی (مثلاً با پارامتر utm_source) میاد، محتوای صفحه همون محتوای اصلیه، فقط یه پارامتر ردیابی اضافه شده. canonical باید به نسخه‌ی بدون این پارامتر اشاره کنه.

۳. صفحات با و بدون اسلش انتهایی

<!-- تو https://example.com/shoes/ -->
<link rel="canonical" href="https://example.com/shoes">

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

۴. محصولات مشابه با تنوع رنگ یا سایز

<!-- تو https://example.com/shoes-red -->
<link rel="canonical" href="https://example.com/shoes">

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

تفاوت canonical با redirect (تغییر مسیر)

ممکنه بپرسی چرا به‌جای canonical، مستقیم یه ریدایرکت (redirect) به آدرس اصلی نمی‌زنیم؟ تفاوتشون اینه: ریدایرکت کاربر رو واقعاً به یه آدرس دیگه منتقل می‌کنه (آدرس URL تو مرورگر عوض می‌شه)، اما canonical فقط یه پیام به موتور جستجوئه؛ کاربر همچنان می‌تونه از همون آدرس اصلی (مثلاً با پارامتر رنگ) بازدید کنه و صفحه دقیقاً همونجا باز می‌مونه، فقط گوگل می‌دونه نسخه‌ی رسمی کجاست. برای مواردی که می‌خوای کاربر همچنان از اون آدرس خاص (مثلاً برای نمایش یه رنگ خاص از محصول) استفاده کنه، canonical گزینه‌ی مناسب‌تریه؛ برای مواردی که یه آدرس کاملاً منسوخ شده و باید همیشه به آدرس جدید بره، redirect (که در سطح سرور تنظیم می‌شه، نه HTML) مناسب‌تره.

ساختار URL تمیز: یه اصل مکمل

علاوه بر canonical، خود ساختار URL هم برای سئو مهمه. یه URL خوب و تمیز باید:

  • کوتاه و خوانا باشه (مثل /products/running-shoes نه /p?id=4521&cat=8)
  • از کلمات معنادار و مرتبط با محتوا استفاده کنه، نه اعداد یا کدهای بی‌معنی
  • از خط تیره (-) برای جدا کردن کلمات استفاده کنه، نه زیرخط (_) یا فاصله
  • ساختار سلسله‌مراتبی منطقی داشته باشه (مثل /blog/html5/introduction)
<!-- URL نامناسب -->
https://example.com/page?id=4521&cat=8&ref=xyz

<!-- URL مناسب -->
https://example.com/blog/introduction-to-html5

یه مثال کامل ترکیبی

<head>
  <meta charset="UTF-8">
  <title>آموزش مقدماتی HTML5</title>
  <meta name="description" content="آشنایی با مبانی HTML5 برای مبتدیان">
  <link rel="canonical" href="https://greendata.ir/blog/introduction-to-html5">
</head>

تو این مثال، حتی اگه این صفحه از آدرس‌های دیگه‌ای (مثلاً با پارامترهای ردیابی یا با/بدون www) هم قابل‌دسترسی باشه، گوگل همیشه می‌دونه نسخه‌ی رسمی و اصلی این محتوا دقیقاً همین آدرسه.

چند اشتباه رایج

  • فراموش‌کردن تگ canonical تو سایت‌هایی که چند نسخه از یه محتوا (با/بدون www، با/بدون پارامتر) دارن.
  • گذاشتن یه canonical اشتباه که به یه صفحه‌ی کاملاً نامرتبط اشاره می‌کنه.
  • استفاده از URLهای طولانی و پر از پارامترهای بی‌معنی به‌جای ساختار تمیز و خوانا.
  • گیج‌کردن canonical با redirect و استفاده‌ی نادرست از یکی به‌جای دیگری.

بهترین روش‌ها

  • همیشه یه نسخه‌ی واحد (با یا بدون www، با یا بدون اسلش انتهایی) رو به‌عنوان استاندارد سایتت انتخاب کن و پایبند بمون.
  • روی هر صفحه، حتی نسخه‌ی اصلی، تگ canonical بذار که به خودش اشاره کنه.
  • URLهای سایتت رو کوتاه، خوانا و معنادار طراحی کن.

نکته‌ی سئو

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

نکته‌ی دسترسی‌پذیری

تگ canonical مستقیماً روی دسترسی‌پذیری صفحه برای صفحه‌خوان‌ها تأثیری ندارد، چون این تگ صرفاً برای ارتباط با موتورهای جستجو طراحی شده، نه برای تجربه‌ی مستقیم کاربر.

جمع‌بندی

تگ link rel="canonical" مشخص می‌کند کدام نسخه از یک محتوا (در میان چند آدرس URL مشابه) باید به‌عنوان نسخه‌ی رسمی توسط گوگل در نظر گرفته شود، و از پخش‌شدن اعتبار سئو بین نسخه‌های تکراری جلوگیری می‌کند. این تگ با redirect متفاوت است، چون کاربر را جابه‌جا نمی‌کند و فقط یک پیام برای موتورهای جستجوست.