تگ Canonical چیست - درک نحوه استفاده از تگ کنونیکال و مفهوم Canonicalization در تنظیم URLهای سایت بسیار با اهمیت است. استفاده نادرست از این تگ میتواند مشکلات زیادی را برای سئو سایت شما ایجاد کند و در کنار آن نیز، استفاده نکردن از آن در مواردی که الزامی است، میتواند باعث مسائلی مانند کنیبال (Cannibalization) و یا محتوای تکراری (Duplicate Content) شود.
هر متخصص سئو و یا برنامهنویس وب باید با این مفهوم آشنا باشد تا بتواند با استفاده صحیح از آن، از مشکلاتی که باعث گمراهی موتورهای جستجو مانند گوگل در درک ساختار سایت ما میشود، جلوگیری کنند.
حال این سوال پیش میآید که تگ کنونیکال چیست؟ چگونه کار میکند و چطور میتوان آن را به سایت افزود؟ تفاوت تگ کنونیکال و URL کنونیکال چیست؟
درک درست این مفهوم باعث بهبود سئو سایت خواهد شد. پس اگر به دنبال افزایش کلیک گوگل هستید و دوست ندارید مشکلی از لحاظ سئو تکنیکال در سایتتان وجود داشته باشد، ادامه این مقاله را همراه ما باشید.
فهرست مطالب
Canonical Tag چیست؟
معنی Canonical به فارسی متعارف است. پس معنی Canonical meta tag، متا تگ متعارف است. یک تگ متعارف (rel=“canonical”) یک قطعه کد HTML است که نسخه اصلی یک صفحه برای محتوای تکراری، تقریبا تکراری و یا صفحات یکسان را مشخص میکند. به بیانی دیگر، اگر یک محتوای یکسان یا تقریبا یکسانی دارید که توسط چندین آدرس قابل دسترس است، شما میتوانید صفحه اصلی آن چند صفحه را به کمک تگ Canonical مشخص کنید. به این شکل به موتورهای جستجو خواهید گفت که کدام یک از صفحات را باید ایندکس کنند.
روش استفاده از این تگ نیز بسیار ساده است. باید آن را به صورت یک متا تگ و به شکل rel canonical مشخص کنیم. یک مثال برای تگ canonical در زیر قرار دادهایم:
<link rel="canonical" href="https://stacklearn.ir/category/search-engine-optimization"/>
Canonical URL چیست؟
فرض کنید چندین آدرس داریم که محتوای تکراری (Duplicate Content) دارند. آدرس اصلی که آن را به کمک تگهای متعارف به عنوان نسخه اصلی معرفی کردهایم، URL متعارف است.
Canonical URL همان آدرسی است که گوگل و سایر موتورهای جستجو آن را به جای سایر صفحات ایندکس میکنند.
چگونه کنونیکالها را پیاده کنیم؟
5 روش برای تعیین یک URL کنونیکال وجود دارد که در زیر آنها را مشاهده میکنید:
- تگ HTML (به شکل rel=canonical)
- HTTP header (به شکل rel=canonical)
- نقشه سایت (Sitemap)
- ریدایرکت 301
- لینکهای داخلی
البته ذکر این نکته حائز اهمیت است که هر کدام از این روشها در جای مناسب خود باید استفاده شوند.
1. تنظیم rel=canonical به کمک کد HTML
بسیار ساده است. در تگ head کافیست برای محتوای تکراری به این شکل کد HTML کنونیکال را تعریف کنید:
<link rel=“canonical” href=“https://example.com/canonical-page/” />
2. تنظیم rel=canonical به کمک HTTP Header
فرض کنید یک ویدیو یا فایل PDF دارید که نسخه اصلی آن آدرس دیگری است. شما هیچ راهی برای قرار دادن تگ Canonical ندارید زیرا تگ head در سند وجود ندارد. در چنین شرایطی میتوان به کمک هدر HTTP این کار را انجام داد.
البته میتوان از این روش برای صفحات عادی HTML نیز استفاده کرد و تفاوتی با روش تگ canonical ندارد.
3. استفاده از کنونیکال در نقشه سایت (Sitemap)
گوگل میگوید که نباید در نقشه سایت از آیتمهایی که کنونیکال شدهاند و نسخه اصلی نیستند، استفاده کنیم. در عوض باید فقط URLهایی را قرار دهیم که Canonical URL (نسخه اصلی) هستند. زیرا گوگل هر لینکی را که در نقشه سایت میبیند، به عنوان یک نسخه اصلی در نظر میگیرد.
4. تنظیم کنونیکال به کمک ریدایرکت 301
میتوانید از ریدایرکت 301 نیز برای انتقال ترافیک یک محتوای تکراری به نسخه کنونیکال (اصلی) استفاده کنید.
فرض کنید سایت شما با همه لینکهای زیر در دسترس است و همه صفحه خانه سایت شما را نمایش میدهند:
- example.com
- example.com/index.php
- example.com/home/
در چنین شرایطی، یکی از صفحات را به عنوان نسخه کنونیکال (نسخه اصلی) در نظر بگیرید و مابقی را به آن صفحه ریدایرکت کنید. برای اینکار موارد HTTP یا HTTPS، با www یا بدون www را نیز در نظر بگیرید.
فرضا اگر سایت شما با https در دسترس است و www نیز ندارد و example.com به عنوان نسخه اصلی انتخاب شده است، باید همه اشکال (با www یا بدون www و با http و یا با https) را به آدرس https://example.com ریدایرکت کنید.
Canonical Tag در وردپرس
اگر از سیستم مدیریت محتوای وردپرس استفاده میکنید، افزونه Yaost SEO را نصب کنید. پس از نصب این پلاگین، تنظیمات تگ کنونیکال به صورت اتوماتیک به تنظیمات اضافه خواهد شد.
برای اینکه Canonical Tag را مشخص کنید، به قسمت پیشرفته (Advanced) در هر پستی از وبلاگ بروید و در بخش Canonical URL، آدرس نسخه اصلی را وارد کنید. اگر پست شما همان صفحه اصلی است، نیازی به پر کردن آن نیست و این فیلد را رها کنید.
چه زمانهایی نسخه اصلی یک URL متفاوت است؟
حال ممکن است برای شما که بر روی سئو سایت خود کار میکنید یا یک توسعهدهنده وب سایت هستید، این سوال پیش بیاید که چه زمانی باید از این مفهوم در صفحات استفاده کنیم؟
به طور کلی تمام صفحات بهتر است به همان صفحه Canonical شده باشند (ارجاع به خود)؛ به غیر از چند موردی که در زیر مطرح کردهایم:
- زمانی که یک مطلب یا محتوا چند قسمتی است. فرضا شما یک مطلب نوشتهاید که 3 قسمت دارد. بخشهای دیگر آن محتوا باید به بخش اول Canonical شوند. بنابراین بخش اول معمولا Canonical URL و نسخه اصلی است.
- زمانی که نسخه اصلی آن صفحه یک URL دیگر است.
- زمانی که دو نسخه از یک محتوا وجود داشته باشد که یکی از آنها صفحه AMP باشد
- زمانی که دو مطلب دارید که بسیار شبیه هم هستند و کاملا در ارتباط با یک مفهوم هستند. عدم استفاده از Canonical URL باعث ایجاد مشکل کنیبالیزیشن میشود.
چگونه در صفحات AMP کنونیکال را مشخص کنیم؟
فرض کنید سایت شما دو صفحه از یک محتوا وجود داشته باشد و یکی از آنها صفحه AMP باشد. اگر گوگل صفحهای که نسخه AMP دارد را پیدا کند، چطور به آن بگوییم که صفحه AMP وجود دارد؟
لینک کردن صفحات با تگ link
برای اینکه مشکل حل شود، اطلاعات را به صفحهای که AMP نیست، میافزاییم و بالعکس، برای صفحه AMP نیز همین کار را انجام میدهیم.
در صفحهای که AMP نیست:
<link rel="amphtml" href="https://www.example.com/url/to/amp/document.html">
و در صفحهای که AMP است:
<link rel="canonical" href="https://www.example.com/url/to/full/document.html">
حال اگر فقط یک صفحه AMP بود، چکار کنیم؟
اگر یک صفحه AMP دارید و نسخه دیگری از آن صفحه که AMP نیست وجود ندارد، باید Canonical tag را نیز به آن اضافه کنید و به راحتی آن را به خودش اشاره کنید:
<link rel="canonical" href="https://www.example.com/url/to/amp/document.html">
اشتباهات رایج در استفاده از Canonicalization
در این بخش به بررسی چند اشتباه رایج میپردازیم که ممکن است توسط تولید کننده محتوا یا حتی برنامهنویس اتفاق افتد که لازم است برای عدم اشتباه به آنها پرداخته شود.
اشتباه اول: مسدود کردن صفحات کنونیکال با robots.txt
این یکی از اشتباهات رایجی است که میتواند تاثیر منفی بسیار زیادی را بر روی سایت شما داشته باشد. چنین اشتباهی در بین وبمستران و برنامهنویسان وب ناشی از عدم درک درست مفهوم robots.txt و canonicalization است.
از خصوصیت Disallow در robots.txt زمانی باید استفاده کرد که بخواهیم یک یا مجموعهای از URLها را به کلی مسدود کنیم تا خزنده گوگل آنها را بررسی نکند. در صورتی که مفهوم کنونیکال کردن این چنین نیست.
canonicalization زمانی مورد استفاده قرار میگیرد که بخواهیم نسخه اصلی یک مجموعهای از محتواهای شبیه به هم و یا تکراری را مشخص کنیم تا از ایجاد مشکل برای موتورهای جستجو در گمراهی و یا ایجاد مشکلاتی مانند Duplicate Content جلوگیری کنیم.
اشتباه دوم: مشخص کردن URLهای کنونیکال شده با rel=nofollow
این اشتباه نیز ممکن است توسط برنامهنویسان و یا کسانی که بر روی سئو سایت کار میکنند، ایجاد شود. گوگل همیشه تگ Canonical را نسبت به rel=nofollow اولویت قرار میدهد.
اگر قصد دارید که یک URL هم کنونیکال شود و هم rel=nofollow شود، بهتر است از ریدایرکت 301 استفاده کنید.
اگر نمیدانید لینک nofollow چیست، میتوانید مقاله آن را بخوانید.
اشتباه سوم: استفاده از یک کد وضعیت 4xx برای URLهای کنونیکال شده
تغییر کد وضعیت یک URL به 4xx همان تاثیری را دارد که در اشتباه دوم به آن پرداختیم. گوگل نمیتواند یک صفحهای که با کد وضعیت 4xx مشخص شده را به عنوان یک URL کنونیکال شده در نظر بگیرد.
اشتباه چهارم: کنونیکال کردن تمام صفحات یک URL صفحهبندی شده (Pagination) به صفحه ریشه
اگر صفحهای دارید که در آن از صفحهبندی استفاده شده (مانند لیست مطالب وبلاگ و یا صفحه محصولات دستهبندی شده)، نباید آنها را به صفحه اول و یا صفحه ریشه (بدون پارامتر page در URL) کنونیکال کنید. در عوض میتوانید همان صفحات را به خودشان کنونیکال کنید.
همچنین میتوانید از تگهای prev و next نیز برای مشخص کردن صفحه بعدی و صفحه قبلی استفاده کنید. البته گوگل دیگر از این تگ پشتیبانی نمیکند اما موتور جستجوی بینگ (Bing) هنوز از این ویژگیها پشتیبانی میکند.
اشتباه پنجم: افزودن تگ کنونیکال در <body>
یکی از اشتباهات دیگری که ممکن است توسط برنامهنویسان وب و خصوصا برنامهنویسان فرانتاند اتفاق افتد، استفاده از این متا تگ در بخش بدنه یا body کد HTML است.