می‌خواهید بعضی صفحات را از گوگل مخفی کنید؟ یا بگویید کجا را نگردد؟ Robots.txt همین کار را می‌کند! این فایل کوچک یکی از اولین چیزی است که موتورهای جستجو وقتی به سایت شما می‌رسند می‌خوانند. بنابراین اگر اشتباه نوشته شده باشد، می‌تواند آسیب جدی به سئوی سایتتان بزند؛ و اگر درست باشد، کمک می‌کند خزنده‌ها هوشمندانه‌تر از منابعشان استفاده کنند.

در این مقاله با نحوه کارکرد robots.txt، دستورات اصلی‌اش، بهترین روش‌های استفاده، اشتباهات رایج، و نکات امنیتی آشنا می‌شوید.

Robots.txt چیست؟

یک فایل متنی ساده که در ریشه سایت قرار می‌گیرد (مثلاً example.com/robots.txt) و به خزنده‌ها دستور می‌دهد. این فایل بر اساس استاندارد REP (Robots Exclusion Protocol) کار می‌کند و تمام موتورهای جستجوی معتبر مثل Google، Bing، Yandex و غیره آن را رعایت می‌کنند.

خزنده‌ها قبل از هر کاری این فایل را می‌خوانند تا بدانند کجا مجاز به رفتن هستند و کجا نیستند. اگر این فایل وجود نداشته باشد، خزنده فرض می‌کند همه جای سایت باز است.

دستورات اصلی

User-agent: *
Disallow: /admin/
Disallow: /private/
Allow: /public/
Sitemap: https://example.com/sitemap.xml
  • User-agent: کدام خزنده — ستاره (*) یعنی همه خزنده‌ها
  • Disallow: نرو به این مسیر
  • Allow: برو به این مسیر (اولویت بالاتر از Disallow)
  • Sitemap: آدرس نقشه سایت

سینتکس کامل robots.txt

هر بلوک دستوری با User-agent شروع می‌شود و یک یا چند قانون Disallow/Allow دارد. می‌توانید بلوک‌های جداگانه برای خزنده‌های مختلف بنویسید:

# همه خزنده‌ها
User-agent: *
Disallow: /wp-admin/
Disallow: /cart/
Disallow: /checkout/
Allow: /wp-admin/admin-ajax.php

# فقط Googlebot
User-agent: Googlebot
Disallow: /no-google/

# مسدود کردن یک خزنده مزاحم
User-agent: BadBot
Disallow: /

Sitemap: https://example.com/sitemap.xml

نکته مهم: خطوط شروع با # کامنت هستند و خزنده‌ها آن‌ها را نادیده می‌گیرند.

نام خزنده‌های معروف

اگر می‌خواهید قانون خاصی فقط برای یک موتور جستجوی خاص باشد، باید نام دقیق خزنده‌اش را بدانید:

  • Googlebot — خزنده اصلی گوگل برای صفحات
  • Googlebot-Image — خزنده گوگل برای تصاویر
  • Bingbot — خزنده Bing
  • Slurp — خزنده Yahoo
  • DuckDuckBot — خزنده DuckDuckGo
  • YandexBot — خزنده Yandex

Wildcards — کارت‌های وایلد

می‌توانید از دو کاراکتر خاص در مسیرها استفاده کنید:

  • * (ستاره): یعنی هر رشته‌ای — مثلاً Disallow: /*.pdf$ یا Disallow: /search?*
  • $ (دلار): انتهای URL — مثلاً Disallow: /page$ فقط /page را مسدود می‌کند نه /page/sub

نکات مهم و هشدارها

  • Robots.txt امنیت نیست! این فقط یک پیشنهاد است، نه یک دیوار امنیتی. موتورهای جستجوی معتبر رعایتش می‌کنند ولی ربات‌های مخرب ممکن است نادیده بگیرند.
  • صفحات حساس را با این مخفی نکنید — آدرس صفحات secret در robots.txt عملاً به همه اعلام می‌شود!
  • اشتباه ننویسید وگرنه کل سایت از ایندکس می‌رود! یک خط اشتباه مثل Disallow: / کل سایت را از گوگل پنهان می‌کند.
  • فضای خالی مهم است — بین دستورات و مسیرها نباید فضای اضافی باشد

اشتباهات رایج که سایت را از گوگل می‌اندازد

این اشتباهات را حتماً اجتناب کنید:

  • Disallow: / — این کل سایت را مسدود می‌کند!
  • Disallow کردن فایل CSS و JS — گوگل برای رندر صفحات به آن‌ها نیاز دارد
  • Disallow کردن صفحاتی که در Sitemap هستند — تناقض ایجاد می‌کند
  • فراموش کردن / در انتهای پوشه‌ها — Disallow: /admin فرق دارد با Disallow: /admin/
  • استفاده از robots.txt به جای noindex برای مخفی کردن صفحات از نتایج

تفاوت Robots.txt و Meta Robots

گاهی اوقات این دو مفهوم با هم اشتباه گرفته می‌شوند. تفاوت مهمی است:

  • Robots.txt: از خزیدن (Crawling) جلوگیری می‌کند. اگر مسیری Disallow باشد، خزنده اصلاً به آن URL نمی‌رود.
  • Meta Robots (noindex): از ایندکس شدن جلوگیری می‌کند. خزنده می‌رود ولی صفحه را نمایش نمی‌دهد.

نکته ظریف: اگر یک URL در robots.txt مسدود باشد ولی از جایی دیگر لینک داشته باشد، گوگل ممکن است آن URL را در نتایج نشان دهد — بدون محتوا! برای مطمئن شدن از عدم نمایش، باید هم robots.txt و هم noindex با هم استفاده شوند، یا فقط noindex.

بهترین روش‌ها برای robots.txt وردپرس

در وردپرس، بعضی مسیرها معمولاً بهتر است مسدود شوند:

User-agent: *
Disallow: /wp-admin/
Disallow: /wp-login.php
Disallow: /?s=
Disallow: /search/
Allow: /wp-admin/admin-ajax.php

Sitemap: https://yoursite.com/sitemap.xml

دقت کنید که /wp-admin/admin-ajax.php را Allow کردیم چون گوگل برای بعضی عملکردهای سایت به این نیاز دارد.

تست Robots.txt

در Google Search Console، بخش Robots.txt Tester هست که می‌توانید تست کنید. این ابزار نشان می‌دهد که آیا Googlebot به یک URL دسترسی دارد یا نه. همچنین می‌توانید از این URL مستقیم وضعیت robots.txt سایتتان را ببینید: yoursite.com/robots.txt

robots.txt و Crawl Budget

برای سایت‌های بزرگ، مدیریت Crawl Budget اهمیت دارد. وقتی صفحات بی‌ارزش (مثل صفحات فیلتر، URL پارامترها، صفحات جستجوی داخلی) را با robots.txt مسدود می‌کنید، گوگل وقت بیشتری برای خزیدن صفحات مهم صرف می‌کند. مثال‌هایی از صفحاتی که معمولاً Disallow می‌کنند:

  • صفحات نتایج جستجوی داخلی (Disallow: /?s=)
  • صفحات فیلتر و مرتب‌سازی در فروشگاه‌ها
  • صفحات صفحه‌بندی بی‌پایان (infinite scroll)
  • URL پارامترهای session یا tracking

robots.txt برای سایت‌های مختلف

فروشگاه آنلاین (WooCommerce)

User-agent: *
Disallow: /wp-admin/
Disallow: /cart/
Disallow: /checkout/
Disallow: /my-account/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://yourshop.com/sitemap.xml

سایت خبری

User-agent: *
Disallow: /search/
Disallow: /tag/
Disallow: /author/
Sitemap: https://yournews.com/news-sitemap.xml

Robots.txt و امنیت سایت

یک سوءتفاهم رایج این است که robots.txt یک لایه امنیتی است. در واقع robots.txt بیشتر شبیه تابلوی «ورود ممنوع» است — کسی که می‌خواهد برود داخل، می‌رود. ربات‌های مخرب، scraperها، و هکرها اصلاً توجهی به robots.txt ندارند.

مهم‌تر از این، robots.txt یک فایل عمومی است. یعنی هر کسی می‌تواند yoursite.com/robots.txt را ببیند. اگر یک مسیر حساس مثل /admin-secret-panel/ را Disallow کنید، عملاً همین مسیر را به همه اعلام کرده‌اید!

برای محافظت واقعی از بخش‌های حساس سایت:

  • احراز هویت (Authentication) اضافه کنید
  • IP Whitelist تنظیم کنید
  • از HTTPS استفاده کنید
  • فایروال برنامه تحت وب (WAF) داشته باشید

Robots.txt و سئو — رابطه‌ای که باید درک کنید

Robots.txt مستقیماً رتبه‌بندی را تغییر نمی‌دهد، ولی به صورت غیرمستقیم روی سئو تأثیر می‌گذارد. وقتی صفحاتی که ارزش سئویی ندارند — مثل صفحات فیلتر، نتایج جستجوی داخلی، یا پارامترهای UTM — را از خزیدن مسدود می‌کنید، گوگل منابعش را روی صفحات مهم متمرکز می‌کند. این یعنی صفحات محصول، مقالات، و صفحات اصلی سریع‌تر ایندکس می‌شوند و به‌روز می‌مانند.

در مقابل، اگر robots.txt اشتباه تنظیم شود، می‌تواند لینک‌های داخلی ارزشمند را قطع کند یا صفحاتی را که باید در گوگل باشند پنهان کند. مثلاً اگر پوشه‌ای از CSS یا JS را Disallow کنید، گوگل نمی‌تواند صفحه را درست رندر کند و ممکن است تجربه کاربری ضعیف را به آن صفحه نسبت بدهد.

فرق Crawl با Index — یک تمایز حیاتی

بسیاری از صاحبان سایت این دو مفهوم را با هم اشتباه می‌گیرند و این اشتباه گران تمام می‌شود. خزیدن (Crawling) یعنی ربات موتور جستجو به صفحه می‌رود و محتوایش را می‌خواند. ایندکس کردن (Indexing) یعنی آن صفحه را در پایگاه داده خودش ذخیره می‌کند تا بتواند در نتایج جستجو نشانش بدهد.

Robots.txt فقط مرحله اول — یعنی خزیدن — را کنترل می‌کند. اگر صفحه‌ای را Disallow کنید ولی از جای دیگری لینک بگیرد، گوگل ممکن است URL آن را بداند و حتی در نتایج نشان بدهد — بدون محتوا. این حالت بدتر از نشان دادن با محتوا است. برای جلوگیری از ایندکس شدن واقعی، باید تگ noindex در هِدر HTTP یا تگ meta داخل صفحه باشد.

این قانون را به خاطر بسپارید: robots.txt برای کنترل Crawl Budget، noindex برای کنترل ایندکس. این دو ابزار مکمل هم هستند و نمی‌توانند جایگزین یکدیگر شوند.

مدیریت robots.txt در سرورهای مختلف

در سرورهای لینوکس، robots.txt معمولاً در مسیر /var/www/html/robots.txt یا /home/username/public_html/robots.txt قرار می‌گیرد — بسته به کانفیگ وب سرور. در هاستینگ‌های اشتراکی، از طریق File Manager کنترل پنل (cPanel، DirectAdmin) می‌توانید به راحتی آن را ویرایش کنید.

در وردپرس، اگر هیچ فایل robots.txt فیزیکی نداشته باشید، وردپرس یک فایل مجازی تولید می‌کند. ولی این فایل مجازی بسیار ساده است و ممکن است برای سایت‌های پیچیده‌تر کافی نباشد. افزونه‌هایی مثل Yoast SEO یا RankMath به شما امکان می‌دهند robots.txt سفارشی بسازید بدون اینکه نیاز به دسترسی FTP داشته باشید.

بررسی robots.txt رقبا — یک منبع اطلاعاتی کم‌توجه

یکی از کارهای جالب در تحلیل رقبا، خواندن robots.txt آن‌ها است. با یک نگاه سریع به این فایل می‌توانید بفهمید چه ساختار URL‌هایی دارند، کدام بخش‌های سایتشان را مهم نمی‌دانند، و از چه CMS یا ابزاری استفاده می‌کنند. البته این اطلاعات باید با احتیاط تفسیر شوند — Disallow بودن یک مسیر لزوماً به معنای بی‌ارزش بودنش نیست.

ابزارهای مفید برای robots.txt

  • Google Search Console → Robots.txt Tester: تست خزیدن به URL‌های خاص
  • Screaming Frog: آنالیز robots.txt سایت و شناسایی صفحات مسدود
  • Bing Webmaster Tools: تستر robots.txt برای Bing
  • robots.txt Validator (آنلاین): بررسی سینتکس فایل قبل از آپلود
  • Sitebulb: نمایش بصری صفحات مسدود و تأثیر آن‌ها بر ساختار لینک‌دهی داخلی

سوالات متداول

آیا Disallow در robots.txt صفحه را از نتایج گوگل پاک می‌کند؟

نه لزوماً. robots.txt از خزیدن جلوگیری می‌کند، نه از ایندکس شدن. اگر صفحه‌ای از جایی لینک داشته باشد، گوگل ممکن است آن را بدون محتوا در نتایج نشان دهد. برای پاک کردن از نتایج، باید از Meta Robots noindex استفاده کنید.

robots.txt را کجا آپلود کنم؟

باید در ریشه اصلی دامنه باشد: https://yoursite.com/robots.txt. اگر سایتتان در یک زیرپوشه است (مثل yoursite.com/blog/)، robots.txt هنوز باید در ریشه اصلی دامنه باشد.

آیا همه ربات‌ها robots.txt را رعایت می‌کنند؟

ربات‌های معتبر مثل موتورهای جستجو رعایت می‌کنند. ولی ربات‌های مخرب یا scraperها ممکن است نادیده بگیرند. robots.txt برای کنترل موتورهای جستجوی معتبر طراحی شده، نه برای امنیت.

برای زیردامنه‌ها چطور؟

هر زیردامنه robots.txt خودش را دارد. robots.txt مربوط به example.com روی blog.example.com تأثیر ندارد. باید برای هر زیردامنه جداگانه robots.txt بسازید.

جمع‌بندی

Robots.txt ابزار قدرتمندی است برای کنترل نحوه خزیدن موتورهای جستجو در سایتتان. با استفاده درست، می‌توانید Crawl Budget را بهینه کنید، از ایندکس شدن محتوای بی‌ارزش جلوگیری کنید، و سرعت ایندکس شدن محتوای مهم را بالا ببرید. ولی باید با دقت استفاده شود — یک اشتباه کوچک می‌تواند کل سایت را از گوگل بیندازد. همیشه قبل از اعمال تغییرات، در Search Console تست کنید.