robots.txt یک فایل متنی ساده در ریشه‌ی سایت است که به ربات‌های موتور جستجو می‌گوید کدام مسیرها را نخزند. دو چیز را باید درباره‌اش بدانید. اول، برای کنترل خزش است، نه برای پنهان کردن صفحه از نتایج؛ برای آن کار باید از noindex استفاده کنید. دوم، یک خط اشتباه در آن (Disallow: /) کل سایت را از گوگل بیرون می‌برد. بیشتر سایت‌ها به یک فایل پنج‌خطی نیاز دارند، نه بیشتر.

کجاست؟

همیشه در آدرس yourdomain.com/robots.txt. در وردپرس اگر چنین فایلی در پوشه‌ی سایت نباشد، خود وردپرس یک نسخه‌ی مجازی می‌سازد. اگر فایل واقعی بسازید (در public_html)، همان خوانده می‌شود. افزونه‌های سئو هم ویرایشگر robots.txt دارند.

دستورها

دستور معنی مثال
User-agent قانون‌های بعدی برای کدام ربات است User-agent: *
Disallow این مسیر را نخز Disallow: /wp-admin/
Allow استثنا داخل یک مسیر بسته Allow: /wp-admin/admin-ajax.php
Sitemap آدرس کامل نقشه‌ی سایت Sitemap: https://example.com/wp-sitemap.xml

ستاره (*) یعنی هر چیزی و علامت دلار ($) یعنی پایان آدرس. مسیرها به حروف بزرگ و کوچک حساس‌اند.

نمونه برای وردپرس

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

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

برای فروشگاه ووکامرسی، این‌ها را هم اضافه کنید:

Disallow: /cart/
Disallow: /checkout/
Disallow: /my-account/
Disallow: /*?add-to-cart=
Disallow: /*?orderby=
Disallow: /*?filter_

سه خط آخر جلوی خزش هزاران ترکیب مرتب‌سازی و فیلتر را می‌گیرد که محتوای تکراری می‌سازند و بودجه‌ی خزش را هدر می‌دهند.

Disallow با noindex یکی نیست

Disallow در robots.txt تگ noindex در صفحه
کارش ربات صفحه را نمی‌خواند ربات می‌خواند ولی در نتایج نمی‌آورد
صفحه ممکن است در نتایج بیاید؟ بله؛ اگر جایی به آن لینک شده باشد، بدون توضیح نمایش داده می‌شود نه
برای چه صرفه‌جویی در خزش حذف از نتایج

اشتباه رایج: صفحه‌ای را هم Disallow می‌کنند و هم noindex. نتیجه برعکس است، چون ربات اجازه ندارد صفحه را بخواند و تگ noindex را هرگز نمی‌بیند. برای حذف از نتایج، فقط noindex بگذارید و خزش را باز نگه دارید.

چه چیزهایی را نبندید

  • فایل‌های CSS و JS و پوشه‌ی قالب. گوگل صفحه را مثل مرورگر می‌سازد؛ اگر استایل را نبیند، صفحه را به‌هم‌ریخته و نامناسب موبایل ارزیابی می‌کند. قانون‌های قدیمی مثل Disallow: /wp-content/ یا /wp-includes/ را بردارید.
  • پوشه‌ی uploads؛ تصاویر هم ورودی می‌آورند.
  • صفحه‌هایی که می‌خواهید noindex شوند.

اشتباه‌های خطرناک

اشتباه نتیجه
Disallow: / کل سایت از خزش بیرون می‌رود. معمولاً از دوره‌ی ساخت سایت جا مانده
تیک «از موتورهای جستجو درخواست کن تا محتوای سایت را بررسی نکنند» در وردپرس وردپرس به همه‌ی صفحه‌ها noindex می‌زند. بعد از راه‌اندازی، در تنظیمات خواندن برش دارید
گذاشتن مسیرهای محرمانه در robots.txt این فایل عمومی است؛ عملاً نشانی آن مسیرها را به همه می‌دهید. برای محرمانگی، رمز بگذارید
فایل در زیرپوشه خوانده نمی‌شود؛ فقط در ریشه معتبر است
کپی کردن robots.txt سایت دیگر مسیرهای آن سایت با شما فرق دارد
robots.txt جدا برای ساب‌دامین را فراموش کردن هر ساب‌دامین فایل خودش را می‌خواهد

(رمز روی پوشه)

ربات‌های هوش مصنوعی

ربات‌هایی مثل GPTBot، ClaudeBot و PerplexityBot هم همین فایل را می‌خوانند. می‌توانید برای هرکدام قانون جدا بنویسید. اگر می‌خواهید در جواب دستیارهای هوش مصنوعی دیده شوید، بازشان بگذارید. (ربات‌های هوش مصنوعی را باز بگذاریم یا ببندیم، llms.txt چیست)

Crawl-delay

این دستور از ربات می‌خواهد بین درخواست‌ها فاصله بگذارد. گوگل آن را نادیده می‌گیرد؛ بینگ و بعضی ربات‌های دیگر رعایت می‌کنند. اگر خزنده‌ای مؤدب ولی پرحجم منابع هاست را می‌گیرد، برای همان ربات Crawl-delay بگذارید. ربات‌های بی‌ادب اصلاً robots.txt را نمی‌خوانند و باید در سطح سرور مسدود شوند. (پیدا کردن ربات مزاحم در لاگ)

تست

  1. آدرس robots.txt را در مرورگر باز کنید و محتوا را بخوانید.
  2. در سرچ کنسول، Settings، بخش robots.txt، آخرین نسخه‌ای که گوگل خوانده و خطاهایش را ببینید.
  3. برای یک صفحه‌ی مشخص، URL Inspection می‌گوید خزش مجاز است یا نه.

گوگل این فایل را تا حدود یک روز کش می‌کند؛ تغییر شما فوری دیده نمی‌شود. (کار با سرچ کنسول)

سوال‌های رایج

سایت robots.txt ندارد؛ مشکلی است؟

نه. نبودنش یعنی همه‌چیز آزاد است. فقط مطمئن شوید آدرسش خطای سرور (5xx) نمی‌دهد؛ در آن حالت گوگل خزش را متوقف می‌کند.

با robots.txt می‌شود جلوی کپی شدن محتوا را گرفت؟

نه. فقط ربات‌هایی که داوطلبانه رعایت می‌کنند.

صفحه‌ام با وجود Disallow در گوگل هست.

چون گوگل از لینک‌های بیرونی آدرسش را می‌داند. Disallow را بردارید و noindex بگذارید.