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 را نمیخوانند و باید در سطح سرور مسدود شوند. (پیدا کردن ربات مزاحم در لاگ)
تست
- آدرس robots.txt را در مرورگر باز کنید و محتوا را بخوانید.
- در سرچ کنسول، Settings، بخش robots.txt، آخرین نسخهای که گوگل خوانده و خطاهایش را ببینید.
- برای یک صفحهی مشخص، URL Inspection میگوید خزش مجاز است یا نه.
گوگل این فایل را تا حدود یک روز کش میکند؛ تغییر شما فوری دیده نمیشود. (کار با سرچ کنسول)
سوالهای رایج
سایت robots.txt ندارد؛ مشکلی است؟
نه. نبودنش یعنی همهچیز آزاد است. فقط مطمئن شوید آدرسش خطای سرور (5xx) نمیدهد؛ در آن حالت گوگل خزش را متوقف میکند.
با robots.txt میشود جلوی کپی شدن محتوا را گرفت؟
نه. فقط رباتهایی که داوطلبانه رعایت میکنند.
صفحهام با وجود Disallow در گوگل هست.
چون گوگل از لینکهای بیرونی آدرسش را میداند. Disallow را بردارید و noindex بگذارید.