تگ کنونیکال (canonical) چیست؟
خیلی ساده بگم: وقتی موتورهای جستجو با نسخههای مشابه یا تکراری از یک محتوا در آدرسهای مختلف روبرو میشوند، ممکن است گیج شوند و ندانند کدام نسخه را باید در نتایج جستجو نشان دهند.
وقتی محتوای ارزشمندی تولید میکنید، طبیعی است که نخواهید به خاطر اشتباهات فنی، بخشی از ارزش و اعتبار آن در نسخههای تکراری هدر برود.
تگ کنونیکال دقیقاً برای همین ساخته شده است: تا به گوگل و دیگر موتورهای جستجو بگوید کدام نسخه از صفحه، نسخه اصلی و مادر است.
مطالب صفحه
تگ کنونیکال دقیقاً چیست؟
تگ کنونیکال (rel=“canonical”) یک تکه کد کوچک HTML است که به موتورهای جستجو میگوید وقتی نسخههای مشابه یا تکراری از یک صفحه در آدرسهای مختلف (URLهای مختلف) وجود دارد، کدام نسخه را باید به عنوان نسخه اصلی در نظر بگیرند.
این کار کمک میکند که فقط همان نسخه اصلی در نتایج جستجو نمایه (ایندکس) شود و بقیه نسخهها به عنوان کپی در نظر گرفته شوند.
این موضوع از آن جهت اهمیت دارد که گوگل ذاتاً از تکرار خوشش نمیآید و وقتی چند نسخه از یک محتوا را ببیند، ممکن است به جای نسخهای که خودتان میخواهید، نسخه دیگری را رتبه بدهد.
پس تگ کنونیکال در واقع نوعی «اعلام مالکیت و اولویت» است که شما به صورت دستی و آگاهانه انجام میدهید.
بدون این تگ، گوگل خودش سعی میکند از بین نسخههای تکراری، یکی را به عنوان نسخه اصلی انتخاب کند؛ اما انتخاب او لزوماً با خواست شما یکی نیست.
همین نکته کوچک یعنی کنترل دست شما؛ چون وقتی خودتان کنونیکال را مشخص میکنید، دیگر بازی را به شانس نمیسپارید.
نحوه عملکرد تگهای کنونیکال
بیایید یک نگاه به یک مثال واقعی از تگ کنونیکال بیندازیم تا دقیقاً بفهمید چه شکلی است:
<link rel="canonical" href="https://example.com/" />
همانطور که میبینید، این فقط یک خط کد در بخش <head> صفحه است؛ اما همین خط کوچک، پیام بزرگی دارد.
آدرسی (URL) که درون این تگ مشخص میکنید، همان نسخه مادر و اصلی صفحهای است که میخواهید در نتایج جستجو نمایه شود.
وقتی گوگل این کد را میبیند، متوجه میشود که صفحه فعلی در واقع همان نسخهای است که در لینک کنونیکال معرفی شده، یا دستکم باید اعتبار و سیگنالهای خود را به همان نسخه منتقل کند.
در حقیقت موتورهای جستجو از این تگ به عنوان یک «اشاره قوی» استفاده میکنند تا بفهمند کدام صفحه را باید به کاربر نشان دهند.
البته باید بدانید که کنونیکال یک دستور قطعی و صددرصدی نیست و گوگل گاهی در شرایط خاص تصمیم خودش را میگیرد؛ اما در اکثر موارد، احترام زیادی برای آن قائل است.
به همین دلیل است که رعایت قواعد درست نوشتن این تگ اهمیت دارد؛ چون اگر اشتباه نوشته شود، ممکن است نادیده گرفته شود.
در ادامه خواهیم دید که چه زمانهایی اصلاً نیاز دارید از این تگ استفاده کنید و چرا اصلاً برای سئو اینقدر حیاتی است.
کی باید از تگ کنونیکال استفاده کنید و چرا اینقدر برای سئو مهم است؟
شما باید هر زمان که محتوای یکسان یا بسیار مشابهی را در چندین آدرس مختلف (URL) در دسترس دارید، از تگ کنونیکال استفاده کنید.
این اتفاق خیلی بیشتر از چیزی که فکر میکنید میافتد و معمولاً بدون اینکه متوجه باشید، روی سایتتان رخ میدهد.
در اینجا فقط چند مورد از دهها دلیلی را میبینید که باعث میشود محتوای تکراری ایجاد شود:
شما محتوای تکراری در آدرسهایی دارید که با و بدون اسلش آخر میآیند (مثلاً example.com/ و example.com).
شما محتوای تکراری در نسخههای دسکتاپ و موبایل صفحات دارید (مثلاً example.com و m.example.com).
شما محتوای تکراری در نسخههای پارامتردار آدرسها دارید (مثلاً example.com و example.com?tracking-code).
نکته جانبی: اگر محتوای خود را در سایتهای دیگر بازنشر (republish) یا سندیکا (syndicate) میکنید، این یک زمان دیگر برای استفاده از تگ کنونیکال است. اگر این کار را نکنید، خطر این وجود دارد که گوگل نسخه بازنشرشده یا سندیکا شده محتوا را به عنوان نسخه اصلی در نظر بگیرد و آن را بالاتر از سایت خودتان در نتایج جستجو رتبه دهد.
بیایید یک مثال واقعی بزنیم تا موضوع کاملاً جا بیفتد. فرض کنید یک فروشگاه اینترنتی دارید که ویجت (widget) میفروشید.
ممکن است یک صفحه دستهبندی داشته باشید که تمام ویجتهای آبی شما را در این آدرس لیست میکند:
example.com/widgets/blue/
اما دقیقاً همان محتوا ممکن است در یک آدرس زشتتر وقتی بازدیدکنندگان فیلتر محصول را اعمال میکنند، در دسترس باشد:
example.com/widgets?color=blue
مگر اینکه کنونیکال را مشخص کنید، ممکن است نسخه «غلط» آدرس نمایه شود و در نتایج جستجو ظاهر شود.
تگهای کنونیکال همچنین کمک میکنند تا سیگنالهای رتبهبندی مثل لینکها روی یک صفحه واحد تجمیع (consolidate) شوند.
این موضوع مهم است چون لینکها یک فاکتور رتبهبندی تاییدشده توسط گوگل هستند و همبستگی قویای بین لینکها و ترافیک وجود دارد.
تحقیقات ما نشان میدهد که همبستگی واضحی بین بکلینکها و ترافیک جستجو وجود دارد.
مقدار زیاد محتوای تکراری همچنین میتواند «بودجه خزش» (crawl budget) را هدر دهد؛ یعنی گوگل منابع خود را صرف خزیدن نسخههای تکراری محتوا به جای صفحات جدیدی که واقعاً میخواهید نمایه شوند، میکند.
مطمئناً، احتمالاً در نهایت متوجه میشود که نباید صفحات تکراری را به صورت منظم خز کند، اما برای اینکه بتواند این کار را انجام دهد، باید ابتدا آنها را خز کند — و دقیقاً همین کار باعث هدر رفتن بودجه خزش میشود.
گوگل باهوش است و خزیدن محتوای تکراری را متوقف میکند، اما برای اینکه بفهمد این کار را انجام دهد، باید ابتدا آن را خز کند که همین باعث هدر رفتن بودجه خزش میشود.
بنابراین میبینید که کنونیکال فقط یک مسئله ظاهری نیست، بلکه مستقیماً روی نحوه تخصیص منابع گوگل به سایت شما اثر میگذارد.
چطور تگ کنونیکال به سایت اضافه کنید
شما میتوانید این کار را به صورت دستی انجام دهید و
<link rel="canonical" href="https://example.com"/>
را به بخش <head> کد صفحه اضافه کنید، اما تقریباً هیچکس این کار را نمیکند چون خیلی دردسر دارد.
معمولاً خیلی راحتتر است که این کار را از طریق پلتفرم سایتساز خودتان انجام دهید.
هر طور که انتخاب میکنید این کار را انجام دهید، مطمئن شوید که این قواعد طلایی را رعایت میکنید:
از آدرسهای مطلق (absolute URLs) استفاده کنید. گوگل میگوید نباید از آدرسهای نسبی (relative URLs) مثل /sample-page/ استفاده کنید، حتی اگرچه آنها پشتیبانی میشوند. این یعنی باید آدرسهای مطلق کامل را در تگهای کنونیکال مشخص کنید (مثل https://example.com/sample-page/).
از دامنه صحیح استفاده کنید. اگر به SSL (یعنی همان https) کوچ کردهاید (که تا الان باید این کار را میکردید!)، مطمئن شوید که هیچ آدرس غیرSSL (یعنی http) را در تگهای کنونیکال خود اعلام نمیکنید. انجام این کار میتواند باعث سردرگمی گوگل و نتایج غیرمنتظره شود.
فقط یک کنونیکال برای هر صفحه مشخص کنید. اگر بیش از یک کنونیکال اعلام کنید، گوگل تمام کنونیکالهای اعلامشده را نادیده میگیرد.
بیایید نگاهی به فرآیند برای چند پلتفرم محبوب بیندازیم.
تنظیم تگهای کنونیکال در وردپرس: افزونه Yoast SEO را نصب کنید، سپس در بخش «Advanced» (پیشرفته) در یک صفحه یا نوشته پایین بروید، جایی که گزینهای برای مشخص کردن کنونیکال میبینید.
تنظیم تگهای کنونیکال در Wix: راهنمای گامبهگام آنها را دنبال کنید. این کار در مقایسه با وردپرس کمی پیچیدهتر است، اما هنوز هم امکانپذیر است.
تنظیم تگهای کنونیکال در Shopify: شاپیفای کنونیکالسازی را به صورت پیشفرض و از پیش نسبتاً خوب مدیریت میکند. آیا این یعنی همیشه بینقص است؟ نه. اما بیشتر فروشگاههای کوچک و متوسط احتمالاً نیازی ندارند تگ کنونیکال را به صورت دستی اضافه کنند. اگر نیاز داشتید، پیشنهاد میکنم کمک یک توسعهدهنده را بگیرید، چون باید کد قالب خودتان (فایلهای .liquid) را مستقیماً ویرایش کنید.
تنظیم تگهای کنونیکال در Squarespace: به تنظیمات پیشرفته (advanced settings) صفحه خود بروید و میتوانید تگهای کنونیکال را به هدر (header) تزریق کنید.
البته در کنار این پلتفرمها، اگر سایتتان را با سیستمهای دیگری مثل جوملا، دروپال یا حتی فریمورکهای اختصاصی ساختهاید، همیشه راهی برای تزریق این تگ در هدر صفحه وجود دارد؛ فقط کافی است مستندات همان سیستم را بخوانید.
نکته مهم این است که هرگز نگذارید چند افزونه یا چند بخش مختلف، هر کدام تگ کنونیکال جداگانهای تولید کنند؛ چون همانطور که در ادامه میبینید، چندتا کنونیکال روی یک صفحه یعنی فاجعه.
روشهای دیگر برای اعلام آدرس کنونیکال
تگهای کنونیکال تنها راه برای اعلام کنونیکال یک صفحه نیستند. شما میتوانید از سه روش دیگر استفاده کنید:
ریدایرکت (Redirect): گوگل میگوید از این فقط زمانی استفاده کنید که یک صفحه تکراری را منسوخ (deprecate) میکنید، چون گوگلبات (و بازدیدکنندگان) را به یک آدرس دیگر هدایت میکند. این گزینه بهویژه برای محتوای تکراری ناشی از در دسترس بودن همزمان صفحات http و https مفید است.
rel=“canonical” در هدر HTTP: برای اسنادی مثل PDFها، هیچ راهی برای قرار دادن تگ کنونیکال در هدر صفحه وجود ندارد چون بخش <head> صفحه وجود ندارد. در چنین مواردی، باید از هدرهای HTTP برای تنظیم کنونیکالها استفاده کنید.
این شکلی برای نسخه PDF این پست وبلاگ ممکن است به نظر برسد:
HTTP/1.1 200 OK
Content-Type: application/pdf
Link: <https://ahrefs.com/blog/canonical-tags/>; rel=”canonical”
شما همچنین میتوانید از یک کنونیکال در هدرهای HTTP روی صفحات وب استاندارد هم استفاده کنید.
نقشه سایت (Sitemap): فقط آدرسهای کنونیکال باید در نقشه سایت شما فهرست شوند، اگرچه گوگل میگوید انجام این کار یک سیگنال کنونیکالسازی ضعیف است.
نکته جانبی: اگر هیچکدام از اینها استفاده نشود، گوگل به سیگنالهای دیگری مثل hreflang، لینکهای داخلی و طول آدرس تکیه میکند تا اگر فکر میکند محتوای تکراری دارید، یک کنونیکال برای شما انتخاب کند.
جان مولر (John Mueller)، مدافع جستجوی گوگل، بارها در ویدیوها و توییتهای خود تأکید کرده است که لینکها — چه داخلی و چه خارجی — خودشان یک سیگنال کنونیکالسازی هستند. این حرف او کاملاً واقعی است و نشان میدهد که معماری لینکهای داخلی شما چقدر در کنار تگ کنونیکال اهمیت دارد.
بنابراین اگر فکر میکنید فقط با زدن یک تگ کنونیکال همهچیز حل میشود، اشتباه میکنید؛ ساختار لینکها و نقشه سایت هم در کنار آن نقش دارند.
اشتباهات رایج در کنونیکالسازی و بهترین روشها
کنونیکالسازی میتواند پیچیده باشد. به همین دلیل، سوءتفاهمها و تصورات غلط زیادی درباره نحوه صحیح کنونیکالسازی وجود دارد.
اشتباه شماره ۱: مسدود کردن آدرس کنونیکالشده از طریق robots.txt
مسدود کردن یک آدرس در robots.txt باعث میشود گوگل نتواند آن را خز کند، به این معنی که قادر نیست هیچ تگ کنونیکالی را روی آن صفحه ببیند. این به نوبه خود مانع میشود که بتواند هرگونه «ارزش لینک» (link equity) را از نسخه غیرکنونیکال به کنونیکال منتقل کند.
اشتباه شماره ۲: تنظیم نسخه کنونیکالشده روی noindex
هرگز noindex و rel=canonical را با هم ترکیب نکنید. آنها دستورالعملهای متناقضی هستند.
جان مولر در ردیت (Reddit) گفت که گوگل به طور کلی تگ کنونیکال را به تگ noindex ترجیح میدهد، اما این تضمینشده نیست. مستندات رسمی گوگل میگوید که noindex صفحه را کاملاً از جستجو حذف میکند. این ممکن است نتیجه نهایی مطلوب باشد، اما روشهای کنونیکالسازی دیگر باید همان اثر را بدون پیامدهای منفی احتمالی (مثل اینکه گوگل نتواند «ارزش لینک» را تجمیع کند) داشته باشند.
اشتباه شماره ۳: تنظیم کد وضعیت HTTP 4XX برای آدرس کنونیکالشده
تنظیم یک کد وضعیت HTTP 4XX برای یک آدرس کنونیکالشده همان اثر را دارد که استفاده از تگ noindex: گوگل قادر نخواهد بود تگ کنونیکال را ببیند و در نتیجه نمیتواند «ارزش لینک» را به نسخه کنونیکال منتقل کند.
اشتباه شماره ۴: کنونیکالسازی تمام صفحات صفحهبندیشده به صفحه ریشه
گوگل میگوید صفحات صفحهبندیشده را به اولین صفحه در سری کنونیکالسازی نکنید.
نکته جانبی: شما همچنین باید از تگهای rel=prev/next برای صفحهبندی استفاده کنید. اینها دیگر توسط گوگل استفاده نمیشوند، اما بینگ (Bing) هنوز از آنها استفاده میکند.
اشتباه شماره ۵: استفاده نکردن از تگ کنونیکال با hreflang
تگهای hreflang برای مشخص کردن زبان و هدفگذاری جغرافیایی یک صفحه وب استفاده میشوند.
گوگل بیان میکند که وقتی از hreflang استفاده میکنید، باید «یک صفحه کنونیکال را در همان زبان مشخص کنید، یا بهترین جایگزین زبان ممکن را اگر کنونیکالی برای همان زبان وجود ندارد».
اشتباه شماره ۶: داشتن چندین تگ rel=canonical
داشتن چندین تگ rel=canonical باعث میشود که احتمالاً توسط گوگل نادیده گرفته شوند. در بسیاری از موارد این اتفاق به این دلیل میافتد که تگها در نقاط مختلف یک سیستم مثل CMS، قالب و افزونه(ها) درج میشوند. به همین دلیل است که بسیاری از افزونهها گزینه «بازنویسی» (overwrite) دارند که برای اطمینان از این است که آنها تنها منبع تگهای کنونیکال باشند.
یک جای دیگر که این ممکن است مشکلساز باشد، کنونیکالهای اضافهشده با جاوااسکریپت است. اگر هیچ آدرس کنونیکالی را در پاسخ HTML مشخص نکردهاید و سپس یک تگ rel=canonical را با جاوااسکریپت اضافه میکنید، باید وقتی گوگل صفحه را رندر میکند، به آن احترام گذاشته شود. با این حال، اگر یک کنونیکال را در HTML مشخص کردهاید و نسخه ترجیحی را با جاوااسکریپت عوض میکنید، در واقع سیگنالهای متناقضی به گوگل میفرستید.
اشتباه شماره ۷: Rel=canonical در بخش <body> Rel=canonical
فقط باید در بخش <head> یک سند ظاهر شود. یک تگ کنونیکال در بخش <body> صفحه نادیده گرفته میشود.
جایی که این میتواند مشکلساز شود، تجزیه (parsing) یک سند است. در حالی که کد منبع یک صفحه ممکن است تگ rel=canonical را در مکان صحیح داشته باشد، وقتی صفحه در واقع در یک مرورگر ساخته میشود یا توسط یک موتور جستجو رندر میشود، بسیاری از چیزهای مختلف مثل تگهای باز نشده، تزریقشده با جاوااسکریپت یا <iframe>ها در بخش <head> میتوانند باعث شوند که <head> زودتر از موعد در حین رندر شدن تمام شود. در چنین مواردی، یک تگ کنونیکال ممکن است به طور تصادفی به بخش <body> یک صفحه رندرشده پرتاب شود، جایی که مورد احترام قرار نمیگیرد.
باید اضافه کنم که یکی از بهترین روشها این است که همیشه یک تگ کنونیکال «خودارجاعدهنده» (self-referencing canonical) روی صفحه اصلی خودتان بگذارید؛ یعنی صفحهای که میخواهید اصلی باشد، به خودش هم کنونیکال بدهد. این کار باعث میشود حتی اگر پارامترهای اضافی به آدرس چسبیده شد، گوگل بداند این همان صفحه اصلی است.
![]()