همیشه یه سوال تکراری توی ذهن سئوکارها بوده: میشه چیزی رو که کاربر میبینه از چشم گوگل مخفی کرد؟ این بار جان مولر از تیم گوگل دقیقا روی همین سوال جواب داده و گفته برای بعضی چیزها مثل یه پاپآپ احراز سن، بستن فایل جاوااسکریپت با robots.txt کاملا قابل قبوله. این جواب برای ما وبمسترها یعنی کنترل بیشتر روی چیزی که موقع رندر صفحه جلوی چشم ربات گوگل یا همان گوگلبات میذاریم.
بذارید ببینم ماجرا از کجا شروع شد و این جواب کجاها به دردتون میخوره.
ماجرا از یه سوال توی Reddit شروع شد
یه سئوکار توی انجمن TechSEO ردیت پرسید که سایتش به دلایل قانونی یه پاپآپ احراز سن داره. این پاپآپ روی یه دامنه جدا میزبانی میشه و با فراخوانی API داخل صفحات سایت تزریق میشه. سوالش این بود که اگه توی robots.txt اون دامنه بیرونی دستور Disallow بذارم، گوگل دیگه پاپآپ رو موقع رندر نمیبینه؟
مولر جواب کوتاه و صریح داد: «این کار معمولا جواب میده.» بعد یه راه جایگزین هم معرفی کرد: اگه پاپآپ با یه فایل اسکریپت مشخص لود میشه، میتونید همون فایل جاوااسکریپت رو توی robots.txt سایت خودتون ببندید. تاپیک اصلی این گفتگو در ردیت هم در دسترسه. یه هشدار هم آخر جوابش بود که پایینتر مفصل میگم: اگه همه کارهای سایتتون با یه فایل JS انجام میشه، دست به اون فایل نزنید.
چرا یک زمانی بستن این فایلها ممنوع مطلق بود؟
یادتون هست اوایل کار سئو خیلیها فایلهای JS و CSS رو میبستن تا بودجه خزش هدر نره؟ اون موقع گوگل صفحات رو رندر نمیکرد و این ترفند عملا بیضرر بود. بعد گوگل رندر کردن رو شروع کرد و تکلیف عوض شد: گوگلبات باید اجازه داشته باشه همه منابعی رو که کاربر میبینه دانلود کنه. سایتهایی که این توصیه رو نادیده گرفتن و فایلهای حیاتی رو بسته نگه داشتن، مدتی رتبههاشون افت کرد. البته بودجه خزش برای سایتهای کوچک معمولا دغدغه اصلی نیست؛ این بحث بیشتر برای سایتهای با دهها هزار صفحه جدیه.
مستندات رسمی گوگل هم تایید میکنه: اگه robots.txt یه URL رو ببنده، گوگلبات اون فایل رو دانلود نمیکنه و طبق مستندات جاوااسکریپت سئوی گوگل جستجوی گوگل جاوااسکریپت فایلهای بستهشده رو رندر نمیکنه. یعنی هرچی توی اون فایل باشه از دید گوگل حذف میشه. حالا فرق این ماجرا با گذشته اینه که پاپآپ احراز سن جزو ساختار اصلی صفحه نیست؛ نه منو توشه نه متن اصلی، پس حذفش از رندر ضرر ساختاری نداره.
روش اول بستن دامنه بیرونی که پاپآپ رو تحویل میده
وقتی محتوای پاپآپ از یه دامنه دیگه میاد (مثل iframe یا فراخوانی اسکریپت از اون دامنه)، کافیه robots.txt همون دامنه اجازه خزش نده. مولر توضیح داد گوگلبات این URL ها رو مثل یه صفحه جدا نمیخزه، ولی موقع رندر صفحه تلاش میکنه بگیرهشون. اگه robots.txt جلوی دانلود رو بگیره، گوگل نمیتونه از این محتوا استفاده کنه و پاپآپ توی نسخه رندر شده دیده نمیشه. این دقیقا همون مدلیه که خیلی از سرویسهای تبلیغاتی کار میکنن و به همین دلیل محتوای بنر تبلیغاتی قاطی محتوای اصلی سایت نمیشه.
اگه اون دامنه بیرونی مال خودتون باشه کار سادهتره، ولی وقتی سرویس ثالثه و به تنظیماتش دسترسی ندارید باید سراغ راه دوم برید. شرط اصلی هم یکیه: صفحات سایت باید بدون اون منبع هم کامل بالا بیان. برای یه پاپآپ معمولا این شرط خودبهخود برقراره چون پاپآپ یه لایه اضافه روی صفحهست، نه ستون فقراتش.
روش دوم بستن فایل اسکریپت روی دامنه خودتون
مولر برای حالتی که به robots.txt دامنه بیرونی دسترسی ندارید یه راه دوم هم گفته: فایل مخصوص لود کردن پاپآپ رو با robots.txt دامنه خودتون ببندید. مثلا اگه فایلی به اسم load-verification-popup.js فقط کار لود کردن همین پاپآپ رو انجام میده، یه خط Disallow برای همون مسیر کافیه تا موقع رندر دانلود نشه. خودش هم اضافه کرد که طبق تجربهاش این روش کمتر رایجه ولی کاملا معتبره.
برای ما کاربران وردپرس هم ترجمهش ساده است: خیلی از افزونههای پاپآپ اسکریپت اختصاصی خودشون رو دارن و میتونید همون یه فایل رو هدف بگیرید. قبلا توی نکات استفاده از پاپ آپ در سایت گفتیم که پاپآپ ابزار دو لبهایه؛ حالا میبینید حتی از نظر سئو هم میشه مدیریتش کرد.
پس کجاها نباید سراغ این کار بریم؟
اول و مهمترینش فایل همهکارهست. مولر صریح گفت اگه فقط یه فایل JS دارید که کلی کار مختلف انجام میده (منو، اسلایدر، فرم و پاپآپ همه با هم)، اون رو نباید ببندید، چون گوگل کل رابط کاربری رو از دست میده و ممکنه بخشی از محتوای صفحه هم درست تفسیر نشه. دوم هیچ فایل حیاتیای رو نبندید؛ قبل از هر تغییری چک کنید صفحه بدون اون فایل درست کار میکنه یا نه. سوم این ترفند برای مخفی کردن محتوای اصلی از گوگل نیست؛ اگه متن و لینک اصلی صفحه رو ببندید، دقیقا همون سناریوی افت رتبه قدیمی تکرار میشه.
اگه الان اخطار Remove Render-Blocking JavaScript توی ابزارهای تست سرعت گرفتتون شده، راه حل رفع اخطار Remove Render-Blocking JavaScript رو بخونید. اونجا بحثش فرق داره: اونجا میخوایم فایلها دیرتر لود بشن، اینجا میخوایم کلا لود نشن.
این ترفند برای چه سایتهایی ارزش عملی داره؟
برای هر سایتی که یه لایه یا ویجت جدا از محتوای اصلی داره: پاپآپ احراز سن و عضویت، چت آنلاین، ابزارهای آمارگیر سنگین و اون مدل محتواهایی که از دامنه ثالث میان. بستن این منابع یعنی گوگلبات موقع رندر درخواست اضافه نمیزنه، منابع خزش هدر نمیره و رندر صفحه سبکتر انجام میشه. این صرفهجویی کوچیک روی سایتهای پرمحتوا که بودجه خزششون مهمه معنیدار میشه.
بحث سرعت هم بیربط نیست؛ هر چی گوگل منابع کمتری بگیره رندر سریعتر تموم میشه، هرچند سرعت واقعی برای کاربر باید جدا بهینه بشه؛ اگه این بخش براتون مهمه، راهنمای جامع افزایش سرعت وردپرس رو از دست ندید. و اگه هدفتون بیشتر محدود کردن رباتهای هوش مصنوعیه تا کنترل رندر، آموزش بستن مسیر آموزش هوش مصنوعی با robots.txt رو قدم به قدم توضیح دادیم.
از کجا چک کنیم که گوگل واقعا اون فایل رو نمیبینه؟
بعد از اعمال تغییر، توی سرچ کنسول ابزار URL Inspection رو باز کنید و تست زنده بگیرید. توی بخش رندر شده ببینید پاپآپ هنوز هست یا نه و چند صفحه اصلی سایت رو هم چک کنید تا چیز دیگهای خراب نشده باشه.
یه نکته فنی: گوگل منابع رندر رو مدتی کش میکنه و طبق مستندات خودش گاهی هدرهای کش رو هم نادیده میگیره، پس چند روز صبر کنید و تست رو دوباره تکرار کنید. اگه بخوام کل ماجرا رو در یه جمله بگم: بستن فایل جاوااسکریپت با robots.txt برای منابع جانبی مثل پاپآپ یه ابزار کنترلی معتبره که خود گوگل تاییدش کرده، ولی خط قرمزش فایلهای همهکاره و منابع حیاتی صفحهست. اول تست کنید، بعد ببندید.