چرا ریدایرکت خودکار زبان قاتل سئو است: ماجرای Googlebot و Accept-Language (با شواهدی از سایت خودمان)
ریدایرکت خودکار بر اساس IP و زبان مرورگر، به Googlebot فقط یک نسخه از سایت را نشان میدهد. سازوکار، آزمون ۱۵ دقیقهای و الگوی درست.
نوشته Roozbeh Nazari · CEO
روی کاغذ ایده مهماننواز به نظر میرسد: سایت را برای بازدیدکننده استانبول به ترکی باز کن، برای آنکه از دبی میآید به عربی. این چیدمان — حدس زدن زبان از مرورگر یا IP و ریدایرکت خودکار — یکی از گرانترین خطاهای سایتهای چندزبانه است، چون کاری که به نام تجربه کاربر انجام میشود، مانع دیدهشدن بیشتر سایت توسط موتور جستجو میشود. در این مقاله سازوکار را قدمبهقدم باز میکنیم و برای هر ادعا دستورهایی میگذاریم که در پانزده دقیقه روی سایت خودتان آزمایشش کنید؛ لازم نیست حرف کسی را باور کنید — شاهد را از سرور خودتان بگیرید.
اول دو واقعیت مستند. یک: Googlebot با درخواستهایش هدر Accept-Language نمیفرستد — یعنی منطق «بر اساس زبان مرورگر ریدایرکت کن» برای بات همیشه به شاخه پیشفرض میافتد. دو: Googlebot عمدتاً از IPهای مستقر در آمریکا میخزد. این دو را کنار هم بگذارید: سایتی که بر اساس IP و زبان ریدایرکت میکند، در تقریباً هر بازدید به Googlebot همان یک نسخه را نشان میدهد — معمولاً انگلیسی، یا هر چه پیشفرض باشد. دقیقاً به همین دلیل راهنمای خود Google برای سایتهای چندمنطقهای صراحتاً توصیه میکند از ریدایرکت خودکار مبتنی بر زبان حدسی پرهیز شود و همه نسخهها برای کاربران و خزندهها در دسترس بمانند. به زبان دیگر: این اختلاف برداشت نیست، چیدمانی است که مستقیماً خلاف دفترچه راهنمای سازنده است.
آسیب محدود نمیماند، زنجیرهای میشود. نسخههای زبانی که خزیده نمیشوند، ایندکس نمیشوند یا از ایندکس میافتند. تگهای hreflang به بدیلهای دردسترسنبوده اشاره میکنند؛ Google اتصالی را که نتواند راستیآزمایی کند به کار نمیگیرد و در نتیجه حتی نسخههای باقیمانده هم در بازارهای اشتباه نمایش داده میشوند. کاربری که در نتایج، عنوان عربی را کلیک میکند، لحظه فرود به زبانی دیگر پرت میشود؛ این گسست میان آنچه جست و آنچه یافت، هم تبدیل و هم سیگنالهای رفتاری را خراب میکند. لایه زیرساخت هم هست: اگر CDN پاسخ 301 را کش کند، ریدایرکت غلط برای همه کاربران منجمد سرو میشود؛ کاربران VPN و مسافران در بازار اشتباه قفل میشوند. و چون ریدایرکت دائمی در مرورگرها هم کش میشود، حتی بعد اصلاح خطا، قربانیان قبلی تا مدتی به آدرس اشتباه میروند.
حالا روال آزمون. آزمون یک، از خط فرمان: یک URL عمیق زبانی را با user-agent مربوط به Googlebot درخواست کنید و کد وضعیت را ببینید — مثلاً صفحهای از خدمات زیر /ar/ را با curl -sI -A "Googlebot" بکشید. پاسخ مورد انتظار 200 است؛ اگر 301 یا 302 دیدید، دسترسی بات به آن صفحه با ریدایرکت قطع میشود. فرمان دوم اثر هدر زبان را میسنجد: همان URL را یک بار با Accept-Language: ar و یک بار کاملاً بدون هدر بخواهید؛ مخصوصاً ببینید URL ریشه در درخواست بدون هدر کجا میرود، چون همان شاخهای است که Googlebot میبیند. یک هشدار: بعضی چیدمانها طوری نوشته شدهاند که فقط با IPهای تأییدشده بات رفتار متفاوت کنند؛ پس حتی اگر آزمونهای خط فرمان تمیز درآمد، دو آزمون بعدی را رد نکنید. ذخیره خروجی فرمانها را هم عادت کنید؛ وقتی همین آزمونها را بعد اصلاح تکرار کنید، یک سابقه قبل و بعد قابل مقایسه خواهید داشت.
آزمون دوم در Search Console است: به URL Inspection یک آدرس عمیق عربی یا انگلیسی بدهید و تست زنده اجرا کنید. اگر دیدید صفحه قابل دریافت نیست یا به خاطر ریدایرکت قابل ایندکس نیست، حدس تمام است و تشخیص گذاشته شده. آزمون سوم در لاگهای سرور: درخواستهای تأییدشده Googlebot را جدا کنید (Google بازههای IP رسمی باتهایش را منتشر میکند؛ با reverse DNS هم راستیآزمایی میشود) و سهم پاسخهای 30x به این درخواستها را ببینید. اگر بخش قابل توجهی از درخواستهای بات به نسخههای زبانی به ریدایرکت ختم میشود، منبع مشکل ایندکس را پیدا کردهاید. ما این روال سهمرحلهای را در چیدمانهای خودمان هم استاندارد اجرا میکنیم؛ در هر سایتی که لایه middleware یا CDN عوض میشود باید نتیجه دوباره تأیید شود، چون یک بهروزرسانی بهظاهر بیخطر فریمورک میتواند بیسروصدا رفتار ریدایرکت بیاورد.
یک راه میانه زیاد پیشنهاد میشود: «Googlebot را از ریدایرکت معاف کنیم.» به دو دلیل توصیه نمیکنیم. اول شکنندگی: معافیتهای مبتنی بر فهرست user-agent و IP با تغییر زیرساخت باتها میشکنند و شکستنشان را معمولاً بعد افت ترافیک میفهمید. دوم اصولی: با کاربر یک جور و با بات جور دیگر رفتار کردن، راهرفتن روی لبه cloaking است؛ توصیه کلی Google این است که برای Googlebot استثنا نسازید. مسئله را باید با تغییر رفتار از ریشه حل کرد، نه با دورزدن بات.
الگوی درست، پیشنهاد بهجای ریدایرکت است. همه URLهای زبانی برای همه آزادانه در دسترس میمانند. بازدیدکننده بار اول، بر اساس زبان حدسی، یک بنر کوچک و قابل بستن میبیند: «این صفحه به عربی هم موجود است.» اگر کاربر انتخاب کرد، ترجیحش در cookie ذخیره میشود و در بازدیدهای بعدی فقط در URL ریشه اعمال میشود؛ به URLهای عمیق در هیچ شرایطی خودکار دست زده نمیشود. در سمت hreflang، x-default به صفحه انتخاب زبان یا نسخهای که به گستردهترین مخاطب خدمت میکند اشاره دارد. در موارد استثنایی که الزام قانونی تفاوت محتوای کشوری میسازد، ریدایرکت غیردائم، هدرهای Vary درست و دامنه محدود به کار میرود — این مسئلهای جدا از ریدایرکت عمومی زبان است. در طراحی بنر هم هشدارهای Google درباره عناصر میانصفحهای مزاحم را به یاد داشته باشید: یک اینترستیشل تمامصفحه زبان که محتوا را میپوشاند، جای مسئله حلشده مسئله تازهای میگذارد؛ یک نوار کوچکِ قابل بستن که مانع خواندن نشود کافی است.
اگر ریدایرکت خودکار همین حالا لایو است، برنامه بازگشت هم باید به اندازه آزمونها منضبط باشد. ترتیب چنین است: اول قاعده ریدایرکت را بردارید و الگوی بنر را فعال کنید؛ بعد پاسخهای ریدایرکت کششده در لایه CDN و edge را پاک کنید، وگرنه رفتار حتی بعد تغییر کد تا مدتی زنده میماند. سپس سایتمپ همه زبانها را دوباره به Search Console بفرستید و برای صفحات حیاتی خدمات از طریق URL Inspection درخواست خزش دوباره بدهید. بهبود را هفتگی در گزارشهای ایندکس صفحات دنبال کنید — و انتظار را درست تنظیم کنید: نسخه زبانیای که مدت طولانی خزیده نشده، برای بازیافتن جای سالم خود در ایندکس هفتهها وقت میخواهد، نه روزها.
جمعبندی برای تصمیمگیرندگان: ریدایرکت خودکار زبان معاملهای است که در ازای صرفهجویی نیمثانیه برای کاربر، بازارهای زبانی کامل را از موتور جستجو پنهان میکند — و طرف بازنده این معامله همیشه شمایید. برگرداندنش هم ارزان نیست: پاکسازی ریدایرکتهای کششده و بازیابی ایندکس زمان میبرد. در پروژههای راهاندازی چندزبانه و مهاجرت، این تصمیم از نخستین بندهای چکلیست ممیزی در خدمات سئوی تکنیکال SEO Evaluate است؛ توصیه ما تکرار فصلی سه آزمون بالا روی سایت خودتان و کنترل رفتار URL ریشه بعد از هر دیپلوی بزرگ است. یک روتین آزمون پانزده دقیقهای، بیمه ماهها افت ایندکس است. برای تیمتان هم یک قاعده تکجملهای بگذارید: هیچ کاربری نباید روی نتیجه جستجو کلیک کند و در صفحهای به زبانی غیر از زبان جستجویش چشم باز کند. اگر قابلیت تازه، تست A/B یا لایه شخصیسازی این قاعده را شکست، چیزی برای بحث وجود ندارد — خطایی هست که باید برگردانده شود؛ تنها بحث این است که چطور با حفظ قاعده انجامش دهیم.