وقتی بحث سئو تکنیکال (Technical SEO) میشه، خیلیها یاد کدهای پیچیده و تنظیمات سرور میافتن و یه کم میترسن. یادمه خودم هم اوایل همین حس رو داشتم. اما یه بخش خیلی مهم از سئوی تکنیکال هست که اصلاً ترسناک نیست، ولی قدرتش به اندازه یه ارتشه: فایل Robots.txt.
این یه فایل متنی سادهاس که نقش «نگهبان» سایت ما رو بازی میکنه. این نگهبان دم در وایمیسته و به هر رباتی (مخصوصاً گوگلبات) که میرسه، خیلی مؤدبانه میگه اجازه داره کجاهای سایت رو بگرده و کجاها براش «خصوصی» محسوب میشه.
اگه این نگهبان رو درست راهنمایی نکنی، ممکنه گوگل وقتش رو توی انباری سایتت (صفحات کمارزش) تلف کنه و به پذیرایی شیکت (مقالات مهمت) نرسه. یا بدتر از اون، ممکنه یه دستور اشتباه بدی و کلاً در رو روی گوگل ببندی!
بیا با هم تو یه گپ خودمونی، اول یه نقشه راه سریع از دستورات این فایل ببینیم و بعد بریم یاد بگیریم چطور این نگهبان رو درست و حرفهای استخدام کنیم.
⚡️ جدول تقلب دستورات Robots.txt (راهنمای سریع)
این جدول رو دم دستت داشته باش تا هر وقت خواستی فایلت رو ویرایش کنی، یه نگاه سریع بهش بندازی:
| دستور (Directive) | معنی ساده (ترجمه انسانی!) | مثال رایج و کاربردی |
User-agent: * |
«آهای همهی رباتها، دارم با شما حرف میزنم.» | User-agent: * |
User-agent: Googlebot |
«هی گوگلبات، این دستور فقط مال توئه.» | User-agent: Googlebot |
Disallow: / |
«ورود به کل سایت ممنوع!» (خیلی مراقب باش!) | Disallow: / |
Disallow: /admin/ |
«لطفاً وارد پوشه ادمین/خصوصی نشو.» | Disallow: /wp-admin/ |
Allow: /admin/style.css |
«گفتم نرو تو ادمین، ولی این یه فایل رو میتونی ببینی.» | Allow: /wp-admin/admin-ajax.php |
Disallow: /*?s= |
«نتایج جستجوی داخلی من رو نخز.» (خیلی مهم!) | Disallow: /*?s= |
Sitemap: |
«راستی، اینم نقشه گنج (نقشه سایت) من.» | Sitemap: https://yourdomain.com/sitemap.xml |
Robots.txt به زبان ساده: چیست و چرا حیاتی است؟
این فایل یه جورایی اولین نقطه تماس رباتهای خزنده با سایت توئه. قبل از اینکه شروع به گشتوگذار (Crawl) توی صفحاتت کنن، اول میان سراغ این فایل تا ببینن تو به عنوان صاحبخونه، چه قوانینی براشون گذاشتی.
تعریف دقیق پروتکل محرومسازی رباتها (Robots Exclusion Protocol)
اگه بخوایم یه کم فنیتر ولی ساده بگیم، Robots.txt مخفف “Robots Exclusion Protocol” یا همون “پروتکل محرومسازی رباتها” است.
این یه استاندارد جهانی وبسایتیه. در واقع یه توافقنامه دوستانه است بین تو (صاحب سایت) و رباتها (مثل خزندههای گوگل، بینگ و…). تو با دستورات سادهای توی این فایل بهشون میگی: «هی ربات عزیز، لطفاً به این پوشهها سرک نکش» یا «ورود به این بخش ممنوعه، چون به دردت نمیخوره».
این فایل بهت کمک میکنه “بودجه خزش” (Crawl Budget) سایتت رو مدیریت کنی. یعنی چی؟ یعنی نذاری ربات گوگل وقت باارزشش رو صرف گشتن توی صفحاتی کنه که هیچ ارزشی برای ایندکس شدن ندارن (مثل صفحه ورود ادمین، نتایج جستجوی داخلی سایتت، یا فایلهای سیستمی).
آیا نداشتن فایل Robots.txt به سئو آسیب میزند؟
بذار همین اول خیالت رو راحت کنم: نه لزوماً.
اگه این فایل رو نداشته باشی، سایتت توسط گوگل پنالتی نمیشه. گوگل و بقیه رباتها خیلی ساده فرض میکنن که «همهجا آزاده» و شروع میکنن به گشتن همهجای سایتت.
اما مشکل از جایی شروع میشه که تو نمیخوای همهجا رو بگردن.
یادمه یه بار روی یه سایت فروشگاهی بزرگ کار میکردم که فایل Robots.txt نداشتن. میدونی چی شده بود؟ گوگل داشت تمام نتایج فیلتر محصولات (مثلاً: کفش قرمز سایز ۴۲ موجود در انبار X) رو میخزید و ایندکس میکرد! یه فاجعه از نظر هدر رفتن بودجه خزش. ما نمیخوایم گوگل وقتش رو صرف صفحاتی کنه که هیچ ارزشی برای کاربر نهایی توی نتایج جستجو ندارن.
پس نداشتنش مستقیماً آسیب نمیزنه، اما داشتن یک فایل Robots.txt بهینه شده، یه حرکت فوقالعاده استراتژیک و هوشمندانه برای مدیریت منابع سایتمونه.
مکان دقیق فایل Robots.txt (چرا آدرس آن اهمیت دارد؟)
این بخش خیلی مهمه، چون اصلاً شوخیبردار نیست.
رباتها موجودات خلاقی نیستن؛ دقیقاً طبق دستورالعمل کار میکنن. اونا فقط و فقط یه جا دنبال این فایل میگردن: توی ریشه اصلی (Root) دامنه تو.
یعنی آدرسش باید دقیقاً این باشه:
https://yourdomain.com/robots.txt
اگه این فایل رو توی یه پوشه دیگه (مثلاً /blog/robots.txt) بذاری، رباتها اصلاً پیداش نمیکنن و انگار که اصلاً وجود نداره. پس یادت باشه، جاش فقط و فقط توی ریشه اصلی سایته. نمیشه براش ریدایرکت گذاشت یا جاش رو عوض کرد. همونجا دم در اصلی باید منتظر رباتها باشه.
درک تفاوت کلیدی Robots.txt و Meta Robots (noindex)
این یکی از اون اشتباهات رایجیه که میتونه حسابی کار دستت بده و باعث بشه صفحاتی که نمیخوای، توی گوگل نشون داده بشن (یا برعکس). بذار با همون مثال مهمونی برات توضیح بدم تا برای همیشه توی ذهنت بمونه:
۱. Robots.txt (دستور Disallow):
این مثل همون «نگهبان دم در» عمل میکنه. وقتی تو یه آدرس رو Disallow میکنی، به ربات گوگل میگی: «اصلاً اجازه نداری وارد این اتاق بشی.»
ربات (اگه مؤدب باشه مثل گوگل) اصلاً وارد اون صفحه نمیشه که ببینه توش چیه. در نتیجه، اون صفحه خزیده (Crawl) نمیشه.
۲. تگ Meta Robots (دستور noindex):
این مثل یه «یادداشت روی میز، داخل همون اتاق» میمونه. ربات باید اجازه داشته باشه وارد اتاق بشه (یعنی صفحه رو Crawl کنه) تا اون یادداشت روی میز رو بخونه. اون یادداشت بهش میگه: «محتویات این اتاق رو دیدی، ولی لطفاً به بقیه (نتایج جستجو) نگو اینجا چی دیدی.»
در نتیجه، اون صفحه ایندکس (Index) نمیشه و توی نتایج گوگل نشون داده نمیشه.
نکته حیاتی: اگه تو یه صفحهای رو با Robots.txt ببندی (Disallow کنی)، گوگل اصلاً واردش نمیشه که اون یادداشت noindex داخلش رو ببینه! پس اگه اون صفحه قبلاً ایندکس شده باشه و تو بعداً بیای Disallow کنی، اون صفحه ممکنه همچنان توی نتایج گوگل باقی بمونه (چون گوگل دستور noindex رو ندیده که حذفش کنه).
قانون طلایی من اینه:
-
اگه میخوای صفحهای خزیده نشه (چون برات مهم نیست یا فنیه)، از
Robots.txtاستفاده کن. -
اگه میخوای صفحهای خزیده بشه ولی ایندکس نشه (توی نتایج گوگل نیاد)، حتماً از تگ
Meta Robotsبا مقدارnoindexاستفاده کن و مطمئن شو که اون صفحه توی Robots.txt بسته نشده باشه.
آموزش دستورات (Directives) اصلی فایل Robots.txt (کالبدشکافی فنی)
دستور User-agent: مجوز ورود به رباتهای خاص (Googlebot, Bingbot, …)
این اولین و مهمترین خط دستوره. User-agent در واقع اسم اون رباتیه که داری باهاش حرف میزنی.
فکر کن همون نگهبان دم در ماست. یکی میاد دم در، نگهبان اول میپرسه: «شما؟»
-
اگه بگه «من Googlebot هستم»، نگهبان میره سراغ دستوراتی که مخصوص
User-agent: Googlebotنوشته شده. -
اگه بگه «من Bingbot هستم»، میره سراغ دستورات
User-agent: Bingbot.
اگه بخوای یه قانون رو برای همهی رباتها بنویسی (که معمولاً هم همین کارو میکنیم)، از یه ستاره * استفاده میکنی. اینجوری:
User-agent: *
این یعنی: «آهای، هر رباتی که داری اینو میخونی، این قوانین مال توئه!»
دستور Disallow: چگونه مسیرها و پوشهها را مسدود کنیم؟
این دستور همون «ورود ممنوع» خودمونه. بعد از اینکه مشخص کردی با کدوم ربات حرف میزنی (مثلاً User-agent: *)، حالا با Disallow بهش میگی کجاها نره.
مثلاً:
User-agent: *
Disallow: /admin/
این یعنی: «به همهی رباتها: لطفاً وارد پوشه /admin/ و هرچیزی که توشه نشید.»
یا:
Disallow: /cart.html
«لطفاً صفحه سبد خرید رو نخزید.»
یه نکته خیلی خیلی مهم: اگه بخوای کل سایت رو ببندی (که امیدوارم هیچوقت این کارو نکنی، مگر در شرایط خاص مثل سایت در حال ساخت)، اینجوری مینویسی:
Disallow: /
این / به تنهایی یعنی «کل ریشه سایت». این دستور مثل اینه که در اصلی ساختمون رو قفل کنی و بگی هیشکی نیاد تو. پس خیلی با احتیاط ازش استفاده کن.
دستور Allow: ایجاد استثنا در قوانین مسدودسازی (یک کاربرد تخصصی)
دستور Allow یه کم پیشرفتهتره و کارش «ایجاد استثنا» است. بذار یه مثال برات بزنم که قشنگ جا بیفته.
فرض کن تو کل پوشه /private/ رو با این دستور بستی:
Disallow: /private/
اما توی این پوشه یه فایل به اسم public-info.pdf داری که میخوای گوگل فقط همین یدونه رو ببینه و ایندکس کنه. اینجا Allow میاد وسط:
User-agent: Googlebot
Disallow: /private/
Allow: /private/public-info.pdf
گوگل اینجوری میخونه: «خب، کل پوشه private ممنوعه… اِا، به جز این یه فایل public-info.pdf. پس فقط همینو میبینم.»
این دستور مثل اینه که بگی: «همه اتاقهای این راهرو قفله، به جز اتاق شماره ۳.» (یادت باشه، همه رباتها مثل گوگلبات انقدر باهوش نیستن که Allow رو بفهمن، ولی برای گوگل و بینگ کار میکنه).
دستور Sitemap: معرفی نقشه سایت به رباتها
این یکی دیگه دستور «ممنوعیت» نیست؛ برعکس، دستور «راهنمایی»ه.
تو با این دستور، خیلی دوستانه آدرس نقشه سایتت (Sitemap) رو به رباتها میدی. این کار واجبی نیست (چون میتونی از طریق سرچ کنسول هم ثبتش کنی)، ولی یه کار خیلی حرفهای و مفیده.
Sitemap: https://yourdomain.com/sitemap.xml
مثل اینه که همون نگهبان دم در، به جای اینکه فقط بگه کجاها نرو، یه نقشه از کل جاهای مهم ساختمون رو هم بده دست ربات و بگه: «بفرما، اینم نقشه جاهایی که باید ببینی تا کارت راحتتر بشه.»
معمولاً این دستور رو آخر فایل Robots.txt مینویسیم.
کاربرد Wildcards (* و $): مسدودسازی الگوهای URL و پارامترها
این دوتا کاراکتر (* و $) بهت قدرت خیلی بیشتری میدن تا بتونی الگوها رو مسدود کنی، نه فقط یه فایل یا پوشه خاص. بهشون میگن Wildcards یا «کاراکترهای همهکاره».
۱. ستاره (*) – معنی: «هرچیزی»
فرض کن توی سایتت یه عالمه URL داری که پارامتر ?sessionid= دارن (پارامترها همون چیزاییان که بعد از علامت ? توی URL میان) و نمیخوای گوگل هیچکدومشون رو بخزه.
نمیتونی که همهشون رو دونه دونه Disallow کنی! اینجوری مینویسی:
Disallow: /*?sessionid=
این یعنی: «هر URLی که توش ?sessionid= داشت رو کلاً بیخیال شو.» اون ستاره * یعنی «هرچیزی که قبل از علامت سوال بود.»
۲. علامت دلار ($) – معنی: «دقیقاً آخر URL»
این یکی خیلی جالبه. فرض کن میخوای همهی فایلهای pdf. سایتت مسدود بشن.
اگه بنویسی: Disallow: /*.pdf
این یعنی: «هر URLی که توش .pdf داره رو مسدود کن.»
اما اگه یه URL مثل این داشته باشی: /best-pdf-converter.html چی؟ خب اینم مسدود میشه چون توش .pdf داره!
اینجاست که $ میاد کمکمون:
Disallow: /*.pdf$
این $ یعنی: «فقط URLهایی رو مسدود کن که دقیقاً به .pdf ختم میشن.» اینجوری دیگه اون صفحه HTML ما به اشتباه مسدود نمیشه. این دوتا ابزار دستتو خیلی باز میذارن تا بتونی مثل یه جراح، دقیقاً همون الگوهایی که میخوای رو فیلتر کنی.
چرا Disallow کردن یک صفحه مانع ایندکس شدن آن نمیشود؟ (خطرناکترین باور غلط)
این خطرناکترین باوریه که میتونی داشته باشی. یادته گفتیم Robots.txt مثل نگهبان دم دره؟
وقتی تو یه صفحه رو Disallow میکنی، فقط به گوگلبات میگی: «حق نداری وارد این اتاق بشی.» (یعنی Crawl نکن).
اما گوگلبات خیلی وقتا اصلاً نیازی نداره وارد اون اتاق بشه تا بفهمه یه همچین اتاقی وجود داره.
چطوری؟ خیلی ساده. فرض کن ربات داره توی راهروی اصلی سایتت (مثلاً صفحه اصلی) میگرده و یه تابلو میبینه که روش نوشته: «در انتهای راهرو: اتاق آرشیو محرمانه» و یه لینک به اون اتاق داده.
ربات گوگل این لینک رو میبینه. با اینکه تو بهش گفتی حق نداره وارد اون اتاق بشه (چون Disallow شده)، اما وجود همون لینک (یا لینکهایی که از سایتهای دیگه به اون صفحه داده شدن) بهش ثابت میکنه که «اتاق آرشیو محرمانه» وجود داره.
در نتیجه، گوگل ممکنه تصمیم بگیره همون اسم اتاق (یعنی URL) رو توی نتایج جستجوش بیاره (یعنی Index کنه)، حتی اگه هیچوقت پاشو داخلش نذاشته باشه و ندونه توش چیه!
چگونه یک URL هم Disallow و هم Index میشود؟
این دقیقاً همون سناریوی ترسناکیه که برات تعریف کردم. بذار فرآیندش رو قدم به قدم ببینیم:
-
کشف: گوگل یه لینک به صفحه
example.com/private-page/تو (که Disallow شده) از یه جای دیگه پیدا میکنه. -
تلاش برای خزش: ربات میره سراغ
Robots.txtتو. میبینه که گفتی:Disallow: /private-page/ -
توقف خزش: گوگلبات مؤدبه، پس وارد صفحه نمیشه (Crawl نمیکنه).
-
تصمیم برای ایندکس: اما گوگل پیش خودش میگه: «خب، من که نمیدونم توش چیه، ولی میدونم این صفحه وجود داره چون بهش لینک داده شده.» پس URL رو ایندکس میکنه.
نتیجهاش توی گوگل چی میشه؟ کاربر این صفحه رو توی نتایج میبینه، ولی چون گوگل محتواش رو نخونده، به جای توضیحات متا، یه همچین چیزی مینویسه:
«اطلاعاتی در مورد این صفحه در دسترس نیست.» یا «A description for this result is not available because of this site’s robots.txt file.»
این افتضاحه! هم صفحهای که نمیخواستی لو رفته، هم به کاربر یه نتیجه به درد نخور نشون دادی.
Robots.txt در مقابل تگ Noindex: کدام را چه زمانی استفاده کنیم؟ (راهنمای تخصصی)
خب، حالا که فرق این دوتا غول رو فهمیدیم، چطوری ازشون استفاده کنیم؟ این قانون طلایی منه، لطفاً اینو یه جا یادداشت کن:
۱. کی از Robots.txt (دستور Disallow) استفاده کنیم؟
-
هدف: وقتی میخوای جلوی خزیده شدن (Crawl) رو بگیری، نه لزوماً ایندکس شدن.
-
کِی؟ برای بخشهایی که هیچ ارزشی برای کاربر توی گوگل ندارن و فقط «بودجه خزش» (Crawl Budget) تو رو هدر میدن.
-
مثالهای من: پوشههای ادمین (
/wp-admin/)، نتایج جستجوی داخلی سایت (/*?s=)، فایلهای سیستمی، یا پوشههای موقت. اینا جاهاییان که اصلاً نمیخوای گوگل وقتش رو اونجا تلف کنه.
۲. کی از تگ Noindex استفاده کنیم؟
-
هدف: وقتی میخوای یه صفحه ایندکس نشه (توی نتایج گوگل نیاد).
-
کِی؟ برای صفحاتی که باید وجود داشته باشن، اما عمومی نیستن.
-
مثالهای من: صفحات تشکر از خرید، نسخههای چاپی مقالات، صفحات تگ یا دستهبندی خیلی کمارزش (که نمیخوای با مقالات اصلیت رقابت کنن)، یا صفحات کمپینهای موقت که تاریخشون گذشته.
قانون حیاتی (اینو باید قاب کنی):
اگر میخواهی صفحهای را
noindexکنی، هرگز، هرگز، هرگز آن را درRobots.txtهمDisallowنکن!
چرا؟ چون اگه Disallow کنی (در رو قفل کنی)، ربات گوگل اصلاً وارد اتاق نمیشه که اون تگ noindex (که مثل یه یادداشت روی میز داخل اتاقه) رو بخونه! پس اگه صفحه قبلاً ایندکس شده باشه، دیگه هیچوقت دستور حذفش رو نمیبینه و برای همیشه توی نتایج گوگل میمونه.
بهینهسازی بودجه خزش (Crawl Budget) با مسدود کردن صفحات کمارزش
بذار یه مثال خودمونی برات بزنم. «بودجه خزش» (Crawl Budget) مثل مقدار زمانیه که یه مهمون خیلی مهم (گوگلبات) حاضره توی مهمونی تو (سایتت) وقت بگذرونه.
حالا تو به عنوان میزبان، ترجیح میدی این مهمون مهم بره توی انباری، اتاق زیرشیرونی، یا دستشوییهای خراب رو بگرده؟ یا دوست داری صاف ببریش توی پذیرایی شیکت، جایی که بهترین محتواها و محصولاتت رو چیدی؟
معلومه که دومی!
اگه تو صفحات کمارزش و به درد نخور سایتت رو باز بذاری، گوگل بخش زیادی از وقتش رو صرف گشتن همون «انباری»ها میکنه. در نتیجه، ممکنه دیرتر به اون مقاله خفن جدیدت یا اون محصول مهمت برسه.
با Disallow کردن صفحات کمارزش، ما داریم خیلی مؤدبانه به گوگل میگیم: «اونجاها چیز جالبی نیست، لطفاً وقتت رو بذار برای بخشهای مهمتر.»
لیست صفحات حیاتی برای مسدودسازی (صفحات ادمین، نتایج جستجوی داخلی، سبد خرید)
خب، حالا اون «انباری»ها و «اتاقهای شخصی» سایت ما کجان که باید درشون رو قفل کنیم؟ این لیست رو همیشه دم دستت داشته باش:
-
صفحات ادمین و ورود: اولین و واضحترین مورد. مثلاً پوشه
/wp-admin/توی وردپرس یا هر آدرس دیگهای مثل/login/یا/admin/. اینا نه تنها ارزشی برای ایندکس ندارن، بلکه از نظر امنیتی هم بهتره اصلاً خزیده نشن. -
نتایج جستجوی داخلی: یه دام کلاسیک برای بودجه خزش! منظورم URLهایی مثل
/?s=کلمه-جستجو-شدهاست. اینا میتونن بینهایت صفحه تکراری و کمارزش (Thin Content) تولید کنن. من دیدم که گوگل توی یه سایتی، هزاران صفحه نتیجه جستجوی داخلی رو ایندکس کرده بود. یه فاجعه کامل! حتماً این الگوها روDisallowکن. -
صفحات فرایندی (سبد خرید، تسویه حساب، اکانت کاربری): صفحاتی مثل
/cart/،/checkout/، یا/my-account/کاملاً شخصی و مخصوص کاربرن. گوگل هیچ کاری با سبد خرید خالی یا پرِ کاربرای تو نداره. اینا باید از خزش دور بمونن.
مدیریت دسترسی به فایلهای CSS, JS و تصاویر (چرا نباید آنها را مسدود کنید)
اینجا نقطه مقابل اون لیسته. این یه اشتباه مرگباره که قبلاً خیلیها (حتی خود وردپرس توی تنظیمات اولیهاش) انجام میدادن: مسدود کردن فایلهای CSS و JavaScript.
چرا نباید این کار رو بکنی؟
چون گوگل دیگه یه ربات کور نیست که فقط متن (HTML) بخونه. گوگل امروز میخواد سایت تو رو دقیقاً همونجوری ببینه که کاربر میبینه.
اگه تو فایلهای CSS (که استایل و قیافه سایتته) و JS (که کارکردها و انیمیشنها رو میسازه) رو ببندی، مثل اینه که گوگل رو چشمبسته بفرستی توی اون پذیرایی شیکت. گوگل نمیفهمه چیدمان چطوریه، نمیفهمه منوها کجان، نمیفهمه صفحه چقدر خوشگله. فقط یه سری متن درهمبرهم میبینه.
نتیجهاش اینه که فکر میکنه سایت تو خرابه یا تجربه کاربری بدی داره و به رتبهات آسیب میزنه. پس همیشه اجازه دسترسی به فایلهای CSS.، JS. و حتی تصاویر مهم رو باز بذار.
آیا باید صفحات تگ (Tag) یا صفحات نویسنده را مسدود کرد؟ (تحلیل تجربی)
اینجا جاییه که بحث از «درست و غلط» میرسه به «بستگی داره». این نظر شخصی و تجربی منه:
قدیما میگفتن: «آره، همه صفحات تگ و نویسنده رو ببند چون محتوای تکراریان.»
اما تجربه الان من چی میگه؟ میگه: «عجله نکن! اول ببین اون صفحه ارزش داره یا نه؟»
- صفحات تگ (Tag Pages): اگه صفحات تگ تو فقط یه لیست بلندبالا از لینک مقالاته، آره، احتمالاً کمارزشه و بهتره noindex بشه (دقت کن! گفتم noindex، نه لزوماً Disallow. یادت که نرفته فرقشون رو؟).
اما اگه تو برای صفحات تگ مهمت (مثلاً تگ «آموزش سئو») یه پاراگراف توضیحی خوب نوشتی، بهترین مقالات مرتبط رو گلچین کردی و عملاً تبدیلش کردی به یه «هاب پیج» (Hub Page) یا یه صفحه دستهبندی موضوعی، اونوقت این صفحه خیلی هم باارزشه! چرا باید مسدودش کنی؟
-
صفحات نویسنده (Author Pages): اگه یه سایت تکنویسنده داری، شاید صفحه نویسنده خیلی مهم نباشه. اما اگه یه سایت تخصصی با چندتا نویسنده خبره داری (مثل ما توی وزیر سئو)، اون صفحه نویسنده بخشی از سیگنال E-A-T (تخصص، اعتبار، اعتماد) توئه. گوگل دوست داره بدونه این محتوای تخصصی رو کی نوشته.
جمعبندی من اینه: به جای مسدود کردن فلهای، استراتژی داشته باش. صفحات تگ و نویسندهای که پتانسیل دارن رو بهینهسازی کن تا مفید باشن، و اونایی که واقعاً کمارزشن رو با noindex از نتایج خارج کن، نه لزوماً با Robots.txt.
آموزش گام به گام ساخت و تست فایل Robots.txt
روش اول: ساخت دستی فایل (Notepad) و آپلود در ریشه (Root)
این روش کلاسیک و به قول معروف «سُنتی» کاره. برای کسایی خوبه که دوست دارن همهچیز دست خودشون باشه و به هاستشون دسترسی مستقیم دارن.
-
یه Notepad ساده (توی ویندوز) یا TextEdit (توی مک) باز کن. (حواست باشه، Word یا ویرایشگرهای پیچیده نه، فقط ویرایشگر متن ساده).
-
دستوراتت رو خط به خط بنویس. مثلاً یه فایل استاندارد و خوب برای وردپرس میتونه این باشه:
User-agent: * Disallow: /wp-admin/ Disallow: /wp-login.php Disallow: /cart/ Disallow: /checkout/ Disallow: /my-account/ Disallow: /?s= Allow: /wp-admin/admin-ajax.php Sitemap: https://yourdomain.com/sitemap.xml -
حالا قسمت خیلی مهم: موقع ذخیره کردن (Save As)، اسم فایل رو دقیقاً بذار robots.txt. حواست باشه که Notepad زرنگی نکنه و تهش یه
.txtدیگه اضافه کنه (که بشهrobots.txt.txt). -
در نهایت، با استفاده از FTP (مثل FileZilla) یا کنترل پنل هاستت (cPanel)، این فایل رو باید آپلود کنی توی ریشه (Root) هاستت. یعنی همونجایی که پوشههای
wp-contentوwp-adminهستن (معمولاً پوشهpublic_html).
روش دوم: استفاده از افزونههای سئو در وردپرس (Yoast/Rank Math)
اگه سایتت وردپرسیه، راستش رو بخوای این راحتترین و امنترین راهه. لازم نیست درگیر FTP و آپلود فایل بشی. هم یواست (Yoast) و هم رنکمث (Rank Math) این امکان رو بهت میدن.
-
توی افزونه Rank Math: برو به
Rank Math>General Settings(تنظیمات عمومی) >Edit robots.txt. -
توی افزونه Yoast SEO: برو به
SEO>Tools(ابزارها) >File editor(ویرایشگر فایل).
توی هر دو افزونه، یه کادر ویرایش متن میبینی. تو فقط دستوراتت رو توی اون کادر کپی میکنی و دکمه «ذخیره» رو میزنی. تمام! خودشون فایل رو در مسیر درست برای رباتها ایجاد میکنن. این روش مورد علاقه منه چون سریع و دمدسته.
روش سوم: استفاده از ابزارهای آنلاین (Robots.txt Generators)
اگه هنوز از نوشتن اون دستورات میترسی و نگران غلط املایی توی Disallow هستی، کلی ابزار آنلاین رایگان (Robots.txt Generators) وجود داره.
کارشون اینه که ازت چندتا سوال ساده میپرسن. مثلاً: «میخوای کدوم ربات رو مسدود کنی؟»، «کدوم پوشه Disallow بشه؟»، «آدرس نقشه سایتت چیه؟».
تو بهشون جواب میدی و اونها در نهایت یه متن آماده و بینقص بهت تحویل میدن. تو فقط اون متن رو کپی میکنی و یا توی افزونهات (روش دوم) پیست میکنی، یا توی فایل دستی (روش اول) میذاری.
نحوه تست فایل قبل از انتشار با ابزار Google Robots.txt Tester
این مهمترین قسمت کاره. خواهش میکنم هیچوقت فایلی رو بدون تست کردن، روی سایت اصلیت نهایی نکن. یادت نره، یه / اضافه یا کم میتونه کل سایتت رو از گوگل حذف کنه!
گوگل یه ابزار عالی توی سرچ کنسول قدیمی داشت به اسم “Robots.txt Tester”. (توی سرچ کنسول جدید دسترسی بهش یه کم سختتر شده، ولی هنوز از طریق بخش راهنمای گوگل میتونی پیداش کنی).
کار این ابزار چیه؟
-
نشون دادن فایل فعلی: بهت نشون میده که گوگل در حال حاضر چه فایلی رو از سایتت میبینه.
-
تست دستورات جدید: تو میتونی دستورات جدیدت رو توی یه کادر دیگه پیست کنی و «تست» رو بزنی تا ببینی خطایی (Syntax error) داره یا نه.
-
تست URL خاص (مهمترین بخش): یه کادر داره که میتونی URLهای مختلف سایتت رو توش وارد کنی. مثلاً:
-
آدرس یه مقاله مهم
-
آدرس صفحه ادمین
-
آدرس سبد خرید
بعد دکمه تست رو میزنی و ابزار بهت میگه که این URL با قوانین تو Allowed (مجاز) میشه یا Blocked (مسدود).
-
این ابزار مثل یه شبیهسازه. قبل از اینکه به نگهبان واقعی دستور بدی، دستوراتت رو روی یه نگهبان تستی امتحان میکنی تا مطمئن بشی دقیقاً همونجوری که میخوای رفتار میکنه.
دستور Crawl-delay چیست و آیا گوگل به آن احترام میگذارد؟
این دستور یه جورایی مثل اینه که به اون مهمون (ربات) بگی: «لطفاً انقدر تند تند توی اتاقها ندو! بین بازدید از هر اتاق، مثلاً ۳ ثانیه صبر کن.»
دستور Crawl-delay دقیقاً همین کار رو میکنه. تو به رباتها میگی که بین هر درخواست (هر بار باز کردن صفحه)، چند ثانیه صبر کنن. این کار برای اینه که به سرور سایتت فشار نیاد، مخصوصاً اگه سرور ضعیفی داری و رباتها با خزش سریعشون سایتت رو کند میکنن.
و اما سوال اصلی: آیا گوگل به این دستور احترام میگذاره؟
جواب کوتاه: نه!
گوگل (Googlebot) رسماً اعلام کرده که این دستور رو نادیده میگیره. گوگل الگوریتمهای هوشمند خودش رو داره که تشخیص میده چقدر به سرور تو فشار بیاره. اگه حس کنه سرورت ضعیفه، خودش اتوماتیک سرعتش رو کم میکنه. (البته توی سرچ کنسول قدیمی میتونستی این سرعت رو دستی هم تنظیم کنی، ولی الان دیگه خودش مدیریت میکنه).
اما جالبه بدونی رباتهای دیگهای مثل Bingbot (مال مایکروسافت) یا Yandex به این دستور احترام میذارن. پس اگه ترافیک زیادی از بینگ داری و نگران بار سرورتی، استفاده از Crawl-delay میتونه مفید باشه، ولی روی گوگل حساب باز نکن.
اگر فایل Robots.txt ما خطای 404 بدهد چه میشود؟
یادته گفتیم این فایل مثل نگهبانه؟ حالا فکر کن ربات میاد دم در و اصلاً هیچ نگهبانی اونجا نیست! (خطای 404 یعنی ‘پیدا نشد’).
اتفاقی که میافته خیلی سادهاس: ربات فرض میکنه که «همهجا آزاده!»
این دقیقاً مثل حالتیه که تو اصلاً فایل robots.txt نداشته باشی. گوگل و بقیه رباتها با خیال راحت شروع میکنن به گشتن همهجای سایتت، از جمله اون پوشه ادمین، نتایج جستجو و هرچیزی که تو نمیخواستی ببینن.
این اتفاق مستقیماً باعث پنالتی نمیشه، ولی یعنی تو هیچ کنترلی روی بودجه خزشت نداری و فرمون مدیریت رباتها کاملاً از دستت خارج شده.
نکته تخصصی: این با خطای 5xx (خطای سرور) فرق داره. اگه سرورت مشکل داشته باشه و فایل 5xx برگردونه، گوگل موقتاً دست نگه میداره و فرض میکنه «همهجا بستهاس» تا وقتی که مشکل سرور حل بشه. ولی 404 یعنی «درها بازه!»
چگونه جلوی خزش رباتهای مخرب (Bad Bots) را بگیریم؟
بذار یه واقعیت تلخ ولی مهم رو بهت بگم. فایل robots.txt یه توافقنامه «دوستانه» و «مؤدبانه» است.
این مثل اینه که تو روی در اتاق خصوصیت یه تابلو زدی «لطفاً وارد نشوید». مهمونهای مؤدب (گوگل، بینگ،…) این تابلو رو میبینن و احترام میذارن.
اما یه دزد یا یه آدم فضول (رباتهای مخرب یا Bad Bots) اصلاً براش مهم نیست تو چی نوشتی! اتفاقاً خیلی از این رباتهای اسپمر یا اسکرپر (اونایی که محتوای سایتت رو میدزدن)، اولین جایی که چک میکنن همین فایل robots.txt توئه تا ببینن چه چیزهایی رو داری قایم میکنی و صاف برن سراغ همونا!
پس robots.txt اصلاً راهحل این کار نیست.
برای مسدود کردن این رباتهای مزاحم، باید بری سراغ راههای جدیتر و امنیتیتر. مثل:
-
تنظیم قوانین توی فایل
.htaccessسرورت (که مستقیماً دسترسی رو از روی IP یا User-agent میبنده). -
استفاده از سرویسهای WAF (Web Application Firewall) مثل Cloudflare که یه لایه امنیتی جلوی سایتت میکشن و این رباتها رو قبل از اینکه اصلاً به سایتت برسن، فیلتر میکنن.
جمعبندی (حالا تو نگهبان سایتت هستی!)
خب، اینم از سفر ما به دنیای فایل Robots.txt. دیدی؟ اصلاً هم ترسناک نبود. این فایل متنی کوچولو، یکی از استراتژیکترین ابزارهای تو برای مدیریت «بودجه خزش» گوگل به حساب میاد.
تو با همین چندتا دستور ساده، عملاً داری فرمون رو دستت میگیری و به گوگل میگی: «هی گوگل! وقتت برام ارزشمنده. بیا صاف برو سراغ این مقالههای عالیم و وقتت رو توی صفحات سبد خرید یا نتایج جستجوی داخلی تلف نکن.»
فقط اون نکته کلیدی رو هیچوقت یادت نره: تفاوت حیاتی بین Disallow (جلوگیری از خزش) و noindex (جلوگیری از ایندکس). این دوتا رو هیچوقت قاطی نکن تا کنترل کامل روی نمایش سایتت توی نتایج گوگل داشته باشی.
حالا برام جالبه بدونم، اولین کاری که بعد از خوندن این راهنما میخوای با فایل robots.txt سایتت انجام بدی چیه؟ میری یه چکی بکنی ببینی همهچی درسته، یا میخوای یه دستی به سر و روش بکشی؟