سئو سایت دوزبانه: hreflang، canonical و اشتباههای رایج
اجرای سایت به دو زبان یک مشکل را حل میکند و یک مشکل دیگر میسازد. به شما اجازه میدهد به هر دو مخاطب برسید، ولی به گوگل هم دو مجموعه صفحه میدهد که به هم شبیهاند و اگر دقیقاً نگویید این دو چه رابطهای با هم دارند، باید حدس بزند. گاهی درست حدس میزند. اغلب تصمیم میگیرد یک زبان کپی زبان دیگر است، نسخهی اشتباه را برای یک جستجو رتبه میدهد، یا اعتبار محتوای شما را بین نسخههایی تقسیم میکند که باید با هم کار میکردند. این راهنما با استفاده از تنظیمات همین سایت دوزبانهی خودمان بهعنوان مثال کاربردی، توضیح میدهد واقعاً چه چیزی باید پیکربندی شود.
hreflang دقیقاً چه کاری میکند
علامتگذاری hreflang به موتورهای جستجو میگوید: این صفحه معادلی به زبان دیگر دارد و آدرسش این است. چیزی را ترجمه نمیکند و مستقیم رتبه را بالا نمیبرد. کاری که میکند این است که به گوگل کمک میکند نسخهی زبانی درست را به جستجوگر درست نشان دهد و بفهمد صفحههای فارسی و انگلیسی شما جایگزینهای یک محتوا هستند، نه دو صفحهی رقیب و تکراری.
این علامتگذاری میتواند در سه جا باشد: یک تگ link در HTML سر صفحه، یک هدر HTTP، یا داخل نقشهی سایت XML. برای بیشتر سایتها گذاشتنش در نقشهی سایت قابلنگهداریترین گزینه است، چون در یک فایل تولیدشده زندگی میکند بهجای اینکه در هر قالب صفحه تکرار شود.
سه قاعدهی مهمتر از بقیه
هر نسخهی زبانی به ارجاع به خودش نیاز دارد. مجموعهی جایگزینهای صفحهی فارسی باید لینکی به خود آن صفحه هم داشته باشد، نه فقط به نسخهی انگلیسی. رد کردن این ارجاع به خود یکی از رایجترین اشتباههای پیادهسازی است.
لینکها باید دوطرفه باشند. اگر صفحهی فارسی به صفحهی انگلیسی بهعنوان جایگزین اشاره میکند، صفحهی انگلیسی هم باید به صفحهی فارسی برگردد. لینک یکطرفه توسط گوگل نامعتبر حساب میشود و آن جفت بهعنوان مرتبط فهمیده نمیشود.
یک x-default بگذارید. این به گوگل میگوید به جستجوگری که زبانش با هیچکدام از جایگزینهای شما جور نیست، مثل کسی که به فرانسوی در سایتی که فقط فارسی و انگلیسی دارد جستجو میکند، کدام نسخه را نشان بدهد. اشارهی x-default به زبان اصلیتان، هر کدام که برای کسبوکارتان اصلی است، انتخاب معمول است.
یک ورودی سالم نقشهی سایت برای یک صفحه، با هر دو نسخهی زبانی اعلامشده، اینطور است:
{
url: "https://example.com/fa/services/seo",
alternates: {
languages: {
fa: "https://example.com/fa/services/seo",
en: "https://example.com/en/services/seo",
"x-default": "https://example.com/fa/services/seo",
},
},
}
تگ canonical و hreflang یک کار نیستند
تگ canonical میگوید «این آدرس ترجیحی برای این محتوای دقیق است.» hreflang میگوید «این یک محتوای معادل به زبان دیگر است.» قاطی کردن این دو یک اشتباه مشخص و مخرب ایجاد میکند: تنظیم canonical صفحهی انگلیسی به آدرس فارسی. این به گوگل میگوید صفحهی انگلیسی اصلاً یک صفحهی واقعی و جدا نیست، فقط کپی صفحهی فارسی است، که میتواند نسخهی انگلیسی را کاملاً از ایندکس حذف کند. هر نسخهی زبانی باید canonical خودش را داشته باشد که به خودش اشاره میکند، و این hreflang است، نه canonical، که آنها را به هم وصل میکند.
ساختار آدرس
هر زبان به آدرس قابلخزش مخصوص خودش نیاز دارد. یک الگوی رایج و قابلاعتماد پیشوند زبانی در مسیر است، مثل /fa/... و /en/...، که مسیریابیاش در فریمورکی مثل Next.js ساده است و استدلال کردن دربارهاش در نقشهی سایت آسان. الگوهای معتبر دیگری هم هست، مثل زیردامنههای جدا یا دامنههای کد کشور، ولی برای بیشتر سایتهای کسبوکاری دوزبانه، پیشوند مسیر سادهترین برای نگهداری درست است.
از تشخیص زبان مرورگر بازدیدکننده و هدایت بیصدای او بدون یک آدرس پایدار برای هر نسخه پرهیز کنید. اگر آدرس بر اساس اینکه چه کسی درخواست میکند تغییر کند، خزندهها نمیتوانند هیچکدام از نسخهها را قابلاعتماد ایندکس کنند و بازدیدکننده هم نمیتواند یک صفحهی زبانی مشخص را نشانهگذاری یا به اشتراک بگذارد.
lang و dir فراتر از سئو هم اهمیت دارند
هر صفحه باید صفت lang در HTML را مطابق زبان واقعیاش تنظیم کند و زبان راستبهچپی مثل فارسی به dir="rtl" روی عنصر ریشهی مربوط نیاز دارد. اینها hreflang نیستند، ولی روی ابزارهای دسترسپذیری، رفتار مرورگر و درستی رندر صفحه اثر میگذارند و اشتباه در آنها روی یک صفحهی فارسی حتی قبل از اینکه مسئلهی سئو شود، برای خواننده یک مشکل دیدنی و فوری است.
محتوا باید واقعاً یکی باشد، نه فقط وجود داشته باشد
hreflang فرض میکند صفحههای لینکشده واقعاً معادل هماند. اگر صفحهی فارسی شما سه پاراگراف دارد و صفحهی انگلیسی سه جمله، از نظر فنی علامتگذاری را رعایت کردهاید ولی نه منظورش را، و بهخوبی حالتی که هر دو نسخه به بازدیدکننده ارزش یکسان بدهند عمل نمیکند. این به معنای ترجمهی تحتاللفظی و کلمهبهکلمه نیست؛ هر زبان را طبیعی بنویسید، ولی همان عمق و ساختار را نگه دارید تا هیچ مخاطبی نسخهی ضعیفتر را نگیرد.
رفتار جستجو با زبان فرق میکند، نه فقط با ترجمه
ترجمهی تحتاللفظی بهترین کلمهی کلیدی فارسی شما لزوماً همان چیزی نیست که یک جستجوگر انگلیسیزبان تایپ میکند. تحقیق کلمات کلیدی باید برای هر زبان جدا انجام شود، چون حجم جستجو، عبارتپردازی و حتی هدف جستجو میتوانند فرق کنند. عبارتی که در فارسی رایج و مشخص است ممکن است در انگلیسی کمیاب باشد یا کاملاً متفاوت بیان شود، و رفتار با سایت انگلیسی بهعنوان آینهی سایت فارسی بهجای مخاطب مستقل خودش، دلیل رایجی است که سئوی دوزبانه حتی با تنظیمات فنی درست هم ضعیف عمل میکند.
جایی که تیمها معمولاً اشتباه میکنند
در عمل، شکستهایی که بیشتر میبینیم چیزهای عجیبی نیستند. سایتی منتشر میشود که فقط canonical و hreflang یک زبانش درست تنظیم شده، چون زبان دوم بعداً بدون بازبینی نقشهی سایت اضافه شده. یک بازطراحی مسیر آدرس یک زبان را عوض میکند ولی زبان دیگر را نه، و لینک دوطرفه را بیسروصدا میشکند تا کسی Search Console را بررسی کند. یا یک صفحهی ترجمهشده بهصورت پیشنویس ساخته میشود، با نیت «بعداً پرش میکنیم»، و hreflang آن را بهعنوان معادل لینک میدهد قبل از اینکه واقعاً معادل باشد. جلوگیری از هرکدام با یک چکلیست کوتاه قبل از انتشار و بررسی دوباره بعد از هر تغییر ساختاری در سایت ساده است.
آزمایش تنظیمات خودتان
بعد از پیکربندی hreflang، بهجای فرض درستی، آن را بررسی کنید. گزارش Page indexing در Search Console نشان میدهد اگر صفحهای بهعنوان تکراری با canonical متفاوت انتخابشده در نظر گرفته شده، که روشنترین نشانهی اشتباه hreflang یا canonical است. نقشهی سایت را مستقیم fetch کنید و بررسی کنید هر آدرس زبانهایی را که انتظار دارید، از جمله ارجاع به خودش، فهرست کرده باشد. و عبارتهای دقیق محتوای خودتان را به هر دو زبان جستجو کنید تا ببینید کدام نسخه واقعاً برای کدام جستجوگر ظاهر میشود.
یک چکلیست کوتاه
- هر صفحه یک canonical دارد که به زبان خودش و به خودش اشاره میکند.
- هر مجموعهی جایگزین شامل لینک به خودش هم هست، نه فقط به زبان دیگر.
- هر لینک hreflang در هر دو جهت دوطرفه است.
- یک
x-defaultروی زبان اصلیتان تنظیم شده. - هر زبان آدرس پایدار و قابلخزش خودش را دارد، نه یک ریدایرکت بر اساس تنظیمات مرورگر.
langوdirروی هر صفحه درست تنظیم شدهاند.- محتوای ترجمهشده از نظر عمق و کیفیت یکی است، نه فقط از نظر وجود داشتن.
درست انجام دادن این یک بار، در کد تولید نقشهی سایت، خیلی قابلاعتمادتر از درست انجام دادنش دستی روی هر صفحه است. تنظیمات فنی اطرافش را در راهنمای سئو سایتهای Next.js و چکلیست سئوی فنی قبل از انتشار سایت پوشش دادهایم. اگر میخواهید تنظیمات دوزبانهی خودتان بررسی شود، خدمات سئو ما بررسی hreflang، canonical و مسیریابی زبان را بهعنوان بخشی از یک ممیزی فنی کامل شامل میشود.
مطالب مرتبط
- سئو سایتهای Next.js: متادیتا، نقشهی سایت و رندرMetadata API، فایلهای sitemap و robots، انتخاب حالت رندر و دادهساختاریافته در Next.js، و اشتباههایی که بیسروصدا به سئو ضربه میزنند.
- چرا صفحات سایت ایندکس نمیشوند؟ مطالعهی موردی ۳۲ صفحهماجرای واقعی سایت خودمان: یک ماه بعد از انتشار، از ۳۲ صفحه فقط ۲۴ صفحه ایندکس شد. دلیلش چه بود، چطور پیدایش کردیم و چه کار کردیم.
- تأثیر سرعت سایت بر نرخ تبدیل و رتبه گوگلمعیارهای Core Web Vitals (LCP و INP و CLS) چطور روی نرخ تبدیل و رتبهی گوگل اثر میگذارند و چطور بسنجیم و بهبودشان بدهیم.
