تگ hreflang زمانی اهمیت پیدا میکند که سایت شما چند نسخه زبانی یا منطقهای از یک صفحه داشته باشد. در چنین شرایطی، فقط ترجمه کردن محتوا کافی نیست؛ باید به گوگل هم کمک کنید نسخه مناسب هر صفحه را برای کاربر درست نمایش دهد.
مثلاً تصور کنید یک صفحه محصول هم نسخه فارسی دارد، هم انگلیسی و هم عربی؛ اما کاربر انگلیسیزبان در نتایج گوگل با نسخه فارسی روبهرو شود. در چنین شرایطی، حتی اگر محتوای شما باکیفیت باشد، تجربه کاربر خراب میشود و بخشی از ترافیک ارزشمند سایت از دست میرود.
استفاده درست از hreflang مخصوصاً برای سایتهای بینالمللی، فروشگاههای چندزبانه، برندهایی که در چند کشور فعالیت میکنند و کسبوکارهایی که روی سئو سایت بهصورت جدی سرمایهگذاری کردهاند، اهمیت زیادی دارد. البته این تگ قرار نیست بهتنهایی رتبه سایت را متحول کند؛ اما اگر اشتباه پیادهسازی شود، میتواند باعث سردرگمی موتورهای جستجو، نمایش URL نامناسب در نتایج و کاهش کیفیت تجربه کاربر شود.
در ادامه این مقاله، دقیق و مرحلهبهمرحله بررسی میکنیم که hreflang چیست، چه سایتهایی به آن نیاز دارند، چطور باید کد hreflang را درست بنویسیم، چه تفاوتی با canonical دارد و رایجترین خطاهایی که هنگام استفاده از آن رخ میدهد چیست.
تگ hreflang چیست؟

تگ hreflang یک ویژگی در تگ link است که رابطه بین نسخههای زبانی یا منطقهای یک صفحه را برای موتورهای جستجو مشخص میکند. این تگ معمولاً همراه با rel=”alternate” استفاده میشود و به گوگل نشان میدهد که URLهای معرفیشده، نسخههای معادل یک محتوا برای زبانها یا مناطق مختلف هستند.
برای مثال، اگر یک صفحه خدمات در سایت شما نسخه فارسی، انگلیسی و عربی داشته باشد، hreflang کمک میکند این نسخهها بهعنوان صفحات جدا و بیارتباط دیده نشوند، بلکه بهعنوان نسخههای جایگزین یکدیگر شناخته شوند.
نکته مهم این است که hreflang جایگزین ترجمه دقیق، ساختار URL منظم یا محتوای اختصاصی برای هر زبان نیست. این تگ فقط رابطه بین نسخههای معادل را مشخص میکند؛ بنابراین اگر صفحات از نظر محتوا، هدف یا ساختار با هم هماهنگ نباشند، اضافه کردن hreflang بهتنهایی مشکل را حل نمیکند.
به زبان ساده، hreflang برای رتبه گرفتن مستقیم ساخته نشده؛ وظیفه اصلی آن این است که نسخههای زبانی و منطقهای یک محتوا را برای موتورهای جستجو قابلفهمتر کند.
ساختار صحیح کد hreflang
برای استفاده از تگhreflang باید نسخههای مختلف یک صفحه را با آدرس کامل به موتورهای جستجو معرفی کنید. این کار معمولاً با تگ link در بخش head صفحه انجام میشود.
یک نمونه ساده از کد hreflang برای صفحهای با نسخه فارسی، انگلیسی و عربی به شکل زیر است:
<link rel=”alternate” hreflang=”fa” href=”https://example.com/fa/page/” />
<link rel=”alternate” hreflang=”en” href=”https://example.com/en/page/” />
<link rel=”alternate” hreflang=”ar” href=”https://example.com/ar/page/” />
<link rel=”alternate” hreflang=”x-default” href=”https://example.com/” />
در این کد، هر خط یک نسخه جایگزین از همان صفحه را معرفی میکند. بخش hreflang زبان یا منطقه هدف را مشخص میکند و بخش href آدرس کامل همان نسخه را نشان میدهد.
برای اینکه کد hreflang درست عمل کند، چند نکته مهم را رعایت کنید:
- آدرس صفحات را بهصورت کامل وارد کنید، نه نسبی.
- هر نسخه زبانی باید به نسخههای دیگر اشاره کند.
- بهتر است هر صفحه، نسخه خودش را هم در لیست hreflang داشته باشد.
- صفحات معرفیشده نباید noindex، حذفشده یا ریدایرکتشده باشند.
مثلاً اگر صفحه فارسی به نسخه انگلیسی و عربی اشاره میکند، صفحه انگلیسی و عربی هم باید همین رابطه را برعکس داشته باشند. اگر این ارتباط دوطرفه نباشد، ممکن است گوگل تگهای hreflang را نادیده بگیرد.
کد زبان و منطقه در hreflang چگونه نوشته میشود؟
یکی از خطاهای رایج در استفاده از hreflang، نوشتن اشتباه کد زبان یا منطقه است. مقدار hreflang باید دقیقاً مشخص کند هر نسخه از صفحه برای چه زبان یا در صورت نیاز، برای چه منطقهای مناسبتر است.
در سادهترین حالت، فقط از کد زبان استفاده میشود؛ مثل fa برای فارسی یا en برای انگلیسی. اما اگر یک زبان برای چند کشور نسخه جداگانه داشته باشد، میتوان منطقه را هم به آن اضافه کرد؛ مثل en-us برای انگلیسی آمریکا یا en-gb برای انگلیسی بریتانیا.
| سناریو | مقدار درست hreflang | توضیح |
| نسخه فارسی عمومی | fa | مناسب برای کاربران فارسیزبان، بدون تفکیک کشور |
| نسخه انگلیسی عمومی | en | مناسب برای صفحه انگلیسی بدون هدفگذاری منطقهای |
| نسخه انگلیسی برای آمریکا | en-us | مناسب وقتی محتوا، قیمت، آدرس یا شرایط برای آمریکا تنظیم شده |
| نسخه انگلیسی برای بریتانیا | en-gb | مناسب وقتی نسخه جداگانهای برای کاربران بریتانیا دارید |
| نسخه عربی عمومی | ar | مناسب برای کاربران عربیزبان بدون تفکیک کشور |
| نسخه عربی برای امارات | ar-ae | مناسب وقتی صفحه مخصوص بازار امارات طراحی شده |
| صفحه پیشفرض یا انتخاب زبان | x-default | مناسب برای صفحه عمومی، صفحه انتخاب زبان یا نسخه fallback |
نکته مهم این است که در hreflang، کد کشور بهتنهایی کافی نیست. برای مثال، us یا gb مقدار درستی برای hreflang نیستند؛ چون ابتدا باید زبان صفحه مشخص شود. شکل درست معمولاً ترکیب زبان و منطقه است؛ مثل en-us یا en-gb.
برای زبان فارسی، در بیشتر مواقع fa کافی است؛ مگر اینکه واقعاً نسخههای متفاوتی برای کشورهای مختلف فارسیزبان داشته باشید. درباره انگلیسی هم همین منطق وجود دارد: اگر فقط یک نسخه عمومی انگلیسی دارید، en مناسب است؛ اما اگر برای آمریکا، بریتانیا یا کانادا صفحات جداگانه ساختهاید، بهتر است از مقدارهای منطقهای استفاده کنید.
اشتباه رایج این است که فقط براساس کشور تصمیم بگیریم، نه زبان. مثلاً اگر صفحهای برای کاربران کانادا ساخته شده، باید مشخص شود زبان آن چیست؛ چون کاربران کانادا میتوانند انگلیسیزبان یا فرانسویزبان باشند. بنابراین بسته به ساختار سایت، ممکن است en-ca یا fr-ca انتخاب درستتری باشد.
x-default در hreflang چیست؟
x-default زمانی استفاده میشود که بخواهید یک صفحه عمومی یا پیشفرض را معرفی کنید؛ صفحهای که به زبان یا کشور خاصی محدود نیست. این مقدار معمولاً برای صفحه انتخاب زبان، صفحه اصلی بینالمللی یا نسخهای به کار میرود که وقتی هیچ نسخه زبانی یا منطقهای مناسبتری وجود ندارد، میتواند گزینه fallback باشد.
برای مثال، اگر سایت شما نسخه فارسی، انگلیسی و عربی دارد، اما کاربری با زبان یا موقعیتی وارد شود که برای آن نسخه مشخصی ندارید، x-default به گوگل کمک میکند صفحه عمومیتری را بهعنوان انتخاب پیشفرض در نظر بگیرد. بنابراین بهتر است x-default را به صفحهای بدهید که واقعاً نقش عمومی یا انتخابگر دارد، نه اینکه بدون دلیل آن را به یکی از نسخههای زبانی خاص وصل کنید.
قبل از نوشتن مقدار hreflang، اول زبان صفحه را مشخص کنید و فقط زمانی منطقه را اضافه کنید که واقعاً نسخه جداگانهای برای آن بازار دارید. اگر هم هیچ نسخه مشخصی برای بخشی از کاربران ندارید، x-default میتواند مسیر پیشفرض را برای آنها روشنتر کند.
روشهای پیادهسازی hreflang

برای پیادهسازی hreflang سه روش اصلی وجود دارد: قرار دادن تگ در کد HTML صفحه، تعریف نسخههای زبانی در XML Sitemap و ارسال اطلاعات از طریق HTTP Header. هر سه روش میتوانند درست باشند، اما انتخاب اشتباه یا اجرای ناهماهنگ آنها باعث میشود مدیریت hreflang سختتر شود و احتمال خطا بالا برود.
به همین دلیل، بهتر است قبل از اجرا، ساختار سایت را بررسی کنید. تعداد صفحات، نوع CMS، تعداد زبانها، وجود یا نبود فایلهای غیر HTML و نحوه مدیریت URLها روی انتخاب روش مناسب تأثیر دارند. در پروژههای بزرگ، این تصمیم بخشی از سئو تکنیکال محسوب میشود؛ چون hreflang فقط یک تگ ساده نیست، بلکه باید در کل ساختار سایت بهصورت منظم و قابل ردیابی اجرا شود.
۱. پیادهسازی hreflang در HTML
در این روش، تگهای hreflang داخل بخش head هر صفحه قرار میگیرند. این روش برای سایتهای کوچک یا متوسط مناسب است؛ مخصوصاً زمانی که تعداد صفحات چندزبانه زیاد نیست و تیم فنی میتواند خروجی هر صفحه را دقیق کنترل کند.
این روش زمانی مناسب است که:
- تعداد URLهای چندزبانه محدود است.
- امکان ویرایش مستقیم بخش head صفحات وجود دارد.
- صفحات با قالبهای قابل کنترل مدیریت میشوند.
- تیم فنی میتواند خروجی کدها را مرتب بررسی کند.
اما اگر سایت هزاران صفحه داشته باشد، مدیریت دستی hreflang در HTML میتواند دردسرساز شود. در چنین شرایطی، یک خطای کوچک در قالب یا CMS ممکن است در تعداد زیادی صفحه تکرار شود.
۲. پیادهسازی hreflang در XML Sitemap
در سایتهای بزرگ، معمولاً استفاده از XML Sitemap انتخاب بهتری است. در این روش، نسخههای زبانی و منطقهای هر URL داخل نقشه سایت معرفی میشوند، نه داخل کد HTML تکتک صفحات.
نمونه سادهشده:
<url>
<loc>https://example.com/fa/page/</loc>
<xhtml:link rel=”alternate” hreflang=”fa” href=”https://example.com/fa/page/” />
<xhtml:link rel=”alternate” hreflang=”en” href=”https://example.com/en/page/” />
<xhtml:link rel=”alternate” hreflang=”ar” href=”https://example.com/ar/page/” />
</url>
مزیت این روش این است که مدیریت hreflang در یک ساختار مرکزی انجام میشود. برای فروشگاههای اینترنتی، سایتهای خبری، سایتهای آموزشی بزرگ یا برندهایی که تعداد صفحات زیادی در چند زبان دارند، این روش معمولاً قابل کنترلتر است.
این روش زمانی مناسبتر است که:
- تعداد صفحات چندزبانه زیاد است.
- سایت بهصورت داینامیک URL تولید میکند.
- تیم فنی امکان تولید خودکار Sitemap دارد.
- میخواهید مدیریت hreflang از قالب صفحات جدا باشد.
البته در این روش هم باید دقت کنید که Sitemap همیشه بهروز بماند. اگر صفحهای حذف، noindex یا ریدایرکت شود، اما همچنان در Sitemap بهعنوان نسخه hreflang معرفی شده باشد، ممکن است سیگنالهای اشتباه به گوگل ارسال شود.
۳. پیادهسازی hreflang با HTTP Header
روش HTTP Header بیشتر برای فایلهایی کاربرد دارد که صفحه HTML نیستند و بخش head ندارند؛ مثل PDF، فایلهای قابل دانلود یا اسناد چندزبانه.
نمونه سادهشده برای معرفی دو نسخه PDF:
Link: <https://example.com/fa/file.pdf>; rel=”alternate”; hreflang=”fa”,
<https://example.com/en/file.pdf>; rel=”alternate”; hreflang=”en”
این روش زمانی مناسب است که:
- محتوای چندزبانه در قالب PDF یا فایل غیر HTML منتشر شده است.
- امکان قرار دادن تگ در head وجود ندارد.
- میخواهید نسخههای جایگزین فایلها را هم به موتورهای جستجو معرفی کنید.
کدام روش بهتر است؟
هیچ روش واحدی برای همه سایتها بهترین نیست. انتخاب درست به مقیاس و ساختار سایت بستگی دارد.
| روش پیادهسازی | مناسب برای | مزیت اصلی | چالش اصلی |
| HTML Head | سایتهای کوچک و متوسط | ساده و قابل مشاهده در سورس صفحه | سختی مدیریت در سایتهای بزرگ |
| XML Sitemap | سایتهای بزرگ و داینامیک | مدیریت مرکزی و منظم URLها | نیاز به بهروزرسانی دقیق Sitemap |
| HTTP Header | فایلهای غیر HTML مثل PDF | قابل استفاده برای محتواهای بدون head | پیچیدگی فنی بیشتر |
بهتر است در بیشتر پروژهها یک روش اصلی انتخاب شود و همان روش بهصورت کامل، تمیز و قابل بررسی اجرا شود. استفاده همزمان از چند روش فقط زمانی منطقی است که دلیل فنی مشخصی داشته باشد؛ مثلاً صفحات HTML از طریق Sitemap مدیریت شوند، اما فایلهای PDF با HTTP Header معرفی شوند.
در نهایت، مهمتر از انتخاب روش، هماهنگی و صحت اجراست. هر نسخه زبانی باید URL کامل و قابل ایندکس داشته باشد، به نسخههای معادل خودش اشاره کند و با canonical، noindex یا ریدایرکتها در تضاد نباشد.
تفاوت hreflang و canonical چیست؟
hreflang و canonical هر دو از تگهای مهم در سئو تکنیکال هستند، اما کاربرد یکسانی ندارند. اشتباه گرفتن این دو میتواند باعث شود گوگل نسخههای مهم صفحات چندزبانه را درست تشخیص ندهد یا حتی بعضی از آنها را بهعنوان نسخه اصلی در نظر نگیرد.
بهطور ساده، تگcanonical برای مشخص کردن نسخه اصلی یک صفحه در میان URLهای مشابه استفاده میشود؛ اما hreflang برای معرفی نسخههای زبانی یا منطقهای یک صفحه کاربرد دارد. یعنی canonical به گوگل میگوید کدام URL نسخه اصلی است، ولی hreflang میگوید این محتوا چند نسخه معادل برای زبانها یا مناطق مختلف دارد.
برای مثال، اگر یک محصول با چند URL مختلف در سایت در دسترس باشد، canonical کمک میکند نسخه اصلی آن مشخص شود. اما اگر همان محصول یک نسخه فارسی، یک نسخه انگلیسی و یک نسخه عربی داشته باشد، hreflang رابطه بین این نسخههای زبانی را توضیح میدهد.
| تگ | کاربرد اصلی | مثال استفاده |
| canonical | مشخص کردن نسخه اصلی بین صفحات تکراری یا بسیار مشابه | وقتی یک محصول با چند URL مختلف باز میشود |
| hreflang | معرفی نسخههای زبانی یا منطقهای یک صفحه | وقتی یک صفحه نسخه فارسی، انگلیسی و عربی دارد |
اشتباه رایج این است که همه نسخههای زبانی را با canonical به یک زبان اصلی ارجاع بدهیم. مثلاً صفحه انگلیسی و عربی را canonical کنیم به صفحه فارسی. این کار میتواند باعث شود گوگل نسخههای انگلیسی و عربی را بهعنوان صفحات مستقل و مناسب برای کاربران همان زبانها در نظر نگیرد.
در بیشتر سایتهای چندزبانه، هر نسخه زبانی باید canonical خودش را داشته باشد و همزمان با hreflang به نسخههای معادل دیگر اشاره کند. یعنی صفحه فارسی به خودش canonical بدهد، صفحه انگلیسی هم canonical خودش را داشته باشد و سپس این صفحات از طریق hreflang بهعنوان نسخههای جایگزین معرفی شوند.
اگر بخواهیم خلاصه کنیم: canonical برای انتخاب نسخه اصلی بین URLهای مشابه است؛ hreflang برای انتخاب نسخه مناسب بین زبانها و مناطق مختلف. این دو تگ رقیب هم نیستند، اما اگر ناهماهنگ استفاده شوند، میتوانند سیگنالهای متناقضی به گوگل بدهند.
آموزش افزودن hreflang در وردپرس
در وردپرس، معمولاً بهترین راه برای افزودن hreflang این نیست که کدها را دستی داخل قالب قرار دهید. اگر سایت چندزبانه دارید، بهتر است از افزونههایی استفاده کنید که زبانها، URLها و ارتباط بین ترجمهها را بهصورت منظم مدیریت میکنند.
افزونههایی مثل WPML، Polylang و Weglot معمولاً میتوانند برای صفحات ترجمهشده، تگهای hreflang را بهصورت خودکار تولید کنند. مزیت این روش این است که وقتی یک صفحه جدید ترجمه میشود یا آدرس یک صفحه تغییر میکند، ارتباط بین نسخههای زبانی راحتتر بهروزرسانی میشود.
با این حال، نصب افزونه بهتنهایی کافی نیست. بعد از راهاندازی سایت چندزبانه در وردپرس، بهتر است این موارد را بررسی کنید:
- هر صفحه به ترجمه معادل خودش وصل شده باشد؛
- ساختار URL زبانها یکدست باشد؛ مثلاً /en/ برای انگلیسی و /ar/ برای عربی؛
- فقط یک افزونه یا روش مشخص مسئول تولید hreflang باشد؛
- خروجی افزونه در چند نوع صفحه مختلف بررسی شود؛ مثل نوشته، محصول، دستهبندی و صفحه خدمات.
در بعضی سایتها، بهخصوص پروژههایی با قالب اختصاصی، چند دامنه متفاوت برای زبانها یا ساختار URL پیچیده، ممکن است نیاز به بررسی فنی دقیقتر وجود داشته باشد. در این حالت، بهتر است hreflang فقط از سمت افزونه رها نشود و خروجی آن با ابزارهای کراول و تست سئو بررسی شود.
نکته مهم این است که تا حد امکان از چند روش مختلف برای تولید hreflang در وردپرس استفاده نکنید. مثلاً اگر افزونه چندزبانه خودش hreflang تولید میکند، اضافه کردن دستی همان تگها در قالب یا یک افزونه دیگر میتواند باعث تکرار، تناقض یا آدرسدهی اشتباه شود.
خطاهای رایج در استفاده از hreflang

بیشتر خطاهای hreflang بهخاطر اشتباهات کوچک اما تکرارشونده ایجاد میشوند؛ مخصوصاً در سایتهایی که صفحات زیادی دارند یا زبانها بهمرور به سایت اضافه شدهاند. قبل از انتشار یا بعد از هر تغییر مهم، این موارد را بررسی کنید:
- رابطه یکطرفه بین صفحات: اگر یک نسخه به نسخه دیگر اشاره میکند، نسخه مقابل هم باید همان ارتباط را برگرداند.
- کد زبان یا منطقه اشتباه: مقدار hreflang باید با زبان صفحه شروع شود و فقط در صورت نیاز، منطقه هم به آن اضافه شود.
- معرفی URLهای ناسالم: URLهای معرفیشده باید در دسترس، قابل ایندکس و بدون خطاهای جدی باشند.
- تناقض با canonical: هر نسخه زبانی نباید با canonical به نسخه زبان دیگری ارجاع داده شود، مگر در سناریوهای کاملاً خاص و حسابشده.
- حذف نسخه خود صفحه از لیست: بهتر است هر صفحه، خودش را هم بهعنوان یکی از نسخههای موجود معرفی کند.
- تولید hreflang از چند منبع مختلف: ترکیب افزونه، قالب، Sitemap و کدنویسی دستی بدون کنترل میتواند باعث تکرار یا تناقض شود.
- وصل کردن صفحات غیرمعادل: hreflang برای نسخههای معادل یک محتواست، نه برای اتصال صفحات مرتبط یا مشابه از نظر موضوعی.
برای جلوگیری از این خطاها، hreflang را مثل یک تنظیم یکبارمصرف نبینید. هر زمان ساختار URL، زبانهای سایت، افزونههای چندزبانه یا Sitemap تغییر میکند، این بخش هم باید دوباره بررسی شود.
چطور hreflang سایت را تست کنیم؟
بعد از پیادهسازی hreflang، بهتر است چند صفحه نمونه را بررسی کنید تا مطمئن شوید خروجی نهایی با ساختار موردنظر شما هماهنگ است. این کار مخصوصاً در سایتهای چندزبانه بزرگ اهمیت بیشتری دارد، چون ممکن است یک خطای کوچک در قالب، افزونه یا Sitemap روی تعداد زیادی URL تکرار شود.
برای تست hreflang، این مسیر را دنبال کنید:
- سورس صفحه را بررسی کنید
یکی از صفحات چندزبانه را باز کنید، وارد View Page Source شوید و عبارت hreflang را جستجو کنید. در این مرحله فقط بررسی کنید که تگها در صفحه وجود دارند و نسخههای معادل همان URL را معرفی میکنند. - چند نوع صفحه را نمونهبرداری کنید
فقط صفحه اصلی را بررسی نکنید. از هر زبان، چند قالب مختلف مثل صفحه محصول، مقاله، دستهبندی و صفحه خدمات را انتخاب کنید تا مطمئن شوید hreflang در کل ساختار سایت درست تولید میشود. - Sitemap را با خروجی صفحه مقایسه کنید
اگر hreflang از طریق XML Sitemap مدیریت میشود، چند URL را در Sitemap بررسی کنید و ببینید با نسخهای که در سایت نمایش داده میشود هماهنگ است یا نه. - از ابزارهای کراول استفاده کنید
برای سایتهای بزرگ، بررسی دستی کافی نیست. ابزارهایی مثل Screaming Frog یا Sitebulb میتوانند خطاهای hreflang را در مقیاس بزرگتر شناسایی کنند و نشان دهند کدام صفحات نیاز به اصلاح دارند.
در نهایت، تست hreflang باید به شما نشان دهد که پیادهسازی فقط روی چند صفحه محدود درست نیست، بلکه در کل ساختار سایت بهصورت منظم و قابل اعتماد اجرا شده است.
جمعبندی
اگر سایت شما فقط یک زبان و یک نسخه مشخص از هر صفحه دارد، hreflang احتمالاً اولویت اصلی سئو تکنیکال شما نیست. اما اگر برای یک محتوا چند نسخه زبانی یا منطقهای ساختهاید، این تگ باید مثل canonical، Sitemap و ساختار URL بخشی از چکلیست فنی سایت باشد.
اجرای درست hreflang یعنی هر نسخه از صفحه، با کد زبان مناسب، URL سالم و ارتباط دوطرفه به نسخههای معادل خودش معرفی شود. در مقابل، اجرای عجولانه یا ناهماهنگ آن میتواند باعث شود گوگل رابطه بین صفحات را درست متوجه نشود یا بعضی سیگنالها را نادیده بگیرد.
برای سایتهایی که قرار است در چند زبان، چند کشور یا چند بازار رشد کنند، hreflang فقط یک جزئیات فنی نیست؛ بخشی از زیرساخت حضور بینالمللی سایت است. در چنین پروژههایی، همکاری با یک آژانس دیجیتال مارکتینگ میتواند کمک کند سئو تکنیکال، محتوا و تجربه کاربر در کنار هم درست طراحی و اجرا شوند.
