Robots.txt چیست، چه کاری انجام میدهد و چطور باید با آن رفتار کرد
خلاصه مطلب
فایل Robots.txt چیست و چه کاربردی در سئو دارد؟ با ساختار Robots.txt، دستورات Allow و Disallow، Sitemap و نحوه تنظیم آن در وردپرس آشنا شوید.
Robots.txt چیست؟
فایل Robots.txt یک فایل متنی ساده است که در ریشه سایت قرار میگیرد و به خزندههای موتورهای جستجو اعلام میکند که کدام بخشهای سایت اجازه Crawl شدن دارند و کدام بخشها نباید Crawl شوند.
به عنوان مثال، اگر آدرس سایت شما این باشد:
https://example.com
فایل Robots.txt معمولاً در این آدرس قرار میگیرد:
https://example.com/robots.txt
گوگل و سایر خزندهها هنگام بررسی سایت میتوانند این فایل را بخوانند و قوانین مشخصشده در آن را برای Crawl کردن URLها در نظر بگیرند. (Google for Developers)
اما یک نکته بسیار مهم وجود دارد:
Robots.txt ابزار حذف صفحات از نتایج گوگل نیست.
یعنی اگر هدفتان این است که یک صفحه اصلاً در نتایج جستجو نمایش داده نشود، نباید صرفاً آن را در Robots.txt مسدود کنید. برای کنترل ایندکس صفحه معمولاً باید از noindex یا روشهای دیگری مانند محدود کردن دسترسی استفاده کنید. (Google for Developers)
Robots.txt چه کاری انجام میدهد؟
بیایید خیلی ساده تصور کنیم گوگل یک ربات دارد که وارد سایت شما میشود.
این ربات قبل از Crawl کردن سایت، فایل:
/robots.txt
را بررسی میکند.
در این فایل میتوانید قوانینی تعریف کنید؛ مثلاً:
گوگل میتواند کل سایت را Crawl کند.
یا:
گوگل وارد پوشه
/admin/نشود.
یا:
هیچ خزندهای وارد پوشه
/private/نشود.
در واقع Robots.txt بیشتر ابزاری برای مدیریت دسترسی خزندهها و کنترل Crawl است، نه ابزاری برای مدیریت مستقیم رتبه یا ایندکس صفحات. (Google for Developers)
مقاله پیشنهادی شما : مشکلات ایندکس شدن صفحات سایت
یک مثال بسیار ساده از Robots.txt
فرض کنید فایل سایت شما این باشد:
User-agent: *
Disallow:
این یعنی برای همه User-agentها هیچ مسیری مسدود نشده و در نتیجه Crawl سایت آزاد است.
حتی اگر فایل Robots.txt نداشته باشید، در حالت عادی همه URLها بهطور پیشفرض مجاز به Crawl هستند؛ بنابراین داشتن Robots.txt برای همه سایتها الزام مطلق نیست. (Google for Developers)
ساختار فایل Robots.txt چگونه است؟
Robots.txt از دستورهای مختلفی تشکیل میشود، اما چند دستور بیشتر از همه استفاده میشوند.
مهمترین آنها عبارتاند از:
User-agentDisallowAllowSitemap
حالا هرکدام را بررسی کنیم.
User-agent در Robots.txt چیست؟
User-agent مشخص میکند قانون موردنظر برای کدام خزنده اعمال شود.
مثلاً:
User-agent: *
علامت * یعنی قانون برای همه خزندههایی که این دستور را رعایت میکنند اعمال شود.
یا:
User-agent: Googlebot
یعنی قانون برای خزنده اصلی جستجوی گوگل در نظر گرفته شده است.
مثلاً:
User-agent: Googlebot
Disallow: /private/
یعنی Googlebot نباید URLهایی را که با مسیر /private/ شروع میشوند Crawl کند. (Google for Developers)
Disallow در Robots.txt چیست؟
دستور Disallow برای جلوگیری از Crawl یک مسیر استفاده میشود.
مثلاً:
User-agent: *
Disallow: /admin/
یعنی:
همه خزندهها نباید URLهای زیر مسیر
/admin/را Crawl کنند.
برای مثال:
https://example.com/admin/
https://example.com/admin/users
https://example.com/admin/settings
میتوانند تحت این قانون قرار بگیرند.
اما دقت کنید که Disallow به معنی حذف قطعی URL از Google Search نیست.
اگر URL از جای دیگری به گوگل معرفی شده باشد، ممکن است گوگل حتی بدون Crawl کردن محتوای آن، URL را کشف و در شرایط خاصی در نتایج نشان دهد. (Google for Developers)
مقاله پیشنهادی : Discovered – Currently Not Indexed
Allow در Robots.txt چیست؟
دستور Allow برای مشخص کردن مسیرهایی استفاده میشود که باید قابل Crawl باشند.
مثلاً:
User-agent: *
Disallow: /private/
Allow: /private/public-page/
در این مثال، مسیر /private/ بهطور کلی مسدود شده، اما مسیر مشخصشده در Allow میتواند استثنا باشد.
نحوه تفسیر بعضی از قوانین پیچیدهتر میتواند به ترتیب و طول مسیرهای منطبق وابسته باشد؛ بنابراین برای فایلهای حساس بهتر است قوانین را ساده و قابل فهم نگه دارید. گوگل جزئیات نحوه تفسیر این قوانین را در مستندات رسمی Robots.txt توضیح داده است. (Google for Developers)
Sitemap در Robots.txt چه کاربردی دارد؟
یکی از کارهای مفیدی که میتوانیم داخل Robots.txt انجام دهیم، معرفی Sitemap است.
مثلاً:
User-agent: *
Disallow:
Sitemap: https://example.com/sitemap.xml
خط Sitemap به خزنده اعلام میکند که Sitemap سایت در چه URLای قرار دارد.
نکته مهم این است که Sitemap دستور Crawl نیست؛ بلکه راهی برای معرفی URLهای مهم سایت به گوگل است. گوگل نیز تأکید میکند که ارسال Sitemap تضمین نمیکند تمام URLهای آن Crawl یا ایندکس شوند. (Google for Developers)
آیا Robots.txt روی ایندکس شدن صفحات تأثیر دارد؟
اینجا دقیقاً همان جایی است که خیلی از آموزشهای سئو اشتباه میکنند.
Robots.txt و Indexing یکی نیستند.
Robots.txt در درجه اول درباره Crawling صحبت میکند.
یعنی:
«گوگل اجازه دارد این URL را بررسی کند یا نه؟»
اما noindex درباره Indexing است:
«اگر این صفحه را دیدی، آن را در نتایج جستجو قرار نده.»
بنابراین این دو را نباید با یکدیگر اشتباه بگیریم.
گوگل هم صراحتاً توصیه میکند از Robots.txt برای جلوگیری از ایندکس شدن صفحات استفاده نکنید. (Google for Developers)
تفاوت Robots.txt و Noindex چیست؟
| مورد | Robots.txt | Noindex |
|---|---|---|
| کنترل Crawl | ✅ | ❌ |
| کنترل Indexing | ❌ | ✅ |
| جلوگیری از دسترسی خزنده | ✅ | ❌ |
| حذف صفحه از نتایج گوگل | ابزار مناسبی نیست | ✅ |
| قرارگیری در فایل | robots.txt | Meta Tag یا HTTP Header |
مثلاً اگر میخواهید صفحه:
/private-page/
اصلاً توسط Googlebot Crawl نشود، میتوانید از:
Disallow: /private-page/
استفاده کنید.
اما اگر میخواهید گوگل صفحه را ببیند ولی آن را در نتایج جستجو نمایش ندهد، noindex راهکار مناسبتری است.
نکته مهم: اگر صفحه را با Robots.txt مسدود کنید، خزنده ممکن است نتواند به صفحه دسترسی پیدا کند و در نتیجه نتواند noindex موجود در آن صفحه را ببیند. به همین دلیل ترکیب این دو روش بدون درک دقیق هدف میتواند نتیجهای خلاف انتظار ایجاد کند. (Google for Developers)
مقاله پیشنهادی : Crawled – Currently Not Indexed
Robots.txt کجا قرار میگیرد؟
Robots.txt باید در ریشه (Root) سایت قرار داشته باشد.
مثلاً:
https://example.com/robots.txt
نه:
https://example.com/blog/robots.txt
قوانین فایل نیز به Host، Protocol و Port مربوط میشوند؛ بنابراین نسخههای مختلف سایت مثل HTTP و HTTPS یا Hostهای متفاوت، میتوانند محدوده اعتبار متفاوتی داشته باشند. (Google for Developers)
یک مثال واقعی
فرض کنیم Robots.txt نارنجیفای به شکل زیر باشد:
User-agent: *
Disallow:
Sitemap: https://narenjify.ir/blog-sitemap.xml
خط اول:
User-agent: *
یعنی قوانین برای همه خزندهها در نظر گرفته شدهاند.
خط دوم:
Disallow:
خالی است؛ بنابراین مسیر خاصی مسدود نشده است.
و خط سوم:
Sitemap: https://narenjify.ir/blog-sitemap.xml
محل Sitemap را به خزنده معرفی میکند
یک اشتباه خطرناک: Disallow: /
این یکی را حتماً جدی بگیرید.
اگر بنویسید:
User-agent: *
Disallow: /
عملاً به خزندهها میگویید:
هیچ URLای از سایت را Crawl نکنید.
این قانون برای یک سایت فعال و قابل جستجو میتواند بسیار خطرناک باشد. (Google for Developers)
به همین دلیل بعد از هر تغییر در Robots.txt باید فایل را با دقت بررسی کنید.
حتماً. از ادامه همان ساختار میرویم و وارد بخشهای عملیتر مقاله میشویم.
Robots.txt در وردپرس چگونه تنظیم میشود؟
اگر سایت شما با وردپرس ساخته شده باشد، معمولاً نیازی نیست فایل robots.txt را از صفر ایجاد کنید؛ وردپرس میتواند یک فایل مجازی برای این منظور ارائه کند.
برای بررسی فایل فعلی، کافی است آدرس زیر را در مرورگر باز کنید:
https://example.com/robots.txt
مثلاً برای سایت خودمان:
https://narenjify.ir/robots.txt
اما اگر از افزونههای سئو یا تنظیمات اختصاصی سرور استفاده میکنید، ممکن است محتوای فایل با حالت پیشفرض وردپرس متفاوت باشد.
آیا تغییر Robots.txt در وردپرس ضروری است؟
خیر.
این یکی از اشتباهات رایج است که تصور کنیم هر سایت وردپرسی باید حتماً یک Robots.txt پیچیده داشته باشد.
اگر سایت شما ساختار سادهای دارد و URLهای غیرضروری برای Crawl کردن ندارید، یک فایل ساده میتواند کاملاً کافی باشد.
مثلاً:
User-agent: *
Disallow:
Sitemap: https://example.com/sitemap.xml
اما در سایتهای بزرگتر، فروشگاههای اینترنتی یا سایتهایی که URLهای پارامتری و فیلترهای زیادی دارند، ممکن است نیاز به تنظیم دقیقتری وجود داشته باشد.
چه صفحاتی را نباید بهسادگی در Robots.txt مسدود کنیم؟
این قسمت بسیار مهم است.
یکی از اشتباهات رایج در تنظیم Robots.txt این است که مدیر سایت تصور میکند هر URLای که برای کاربر اهمیت ندارد، باید در Robots.txt مسدود شود.
اما چنین تصمیمی میتواند روی Crawl و حتی توانایی گوگل برای فهمیدن ساختار سایت تأثیر بگذارد.
صفحات مهم سایت
صفحات اصلی مانند:
صفحه اصلی
صفحات خدمات
مقالات
دستهبندیهای ارزشمند
صفحات محصولات
صفحات فرود
صفحات محلی
نباید بدون دلیل مسدود شوند.
مثلاً اگر صفحه:
https://example.com/seo/
یکی از صفحات مهم سایت است، نباید صرفاً برای کاهش Crawl آن را با Disallow ببندیم.
آیا پوشه wp-admin را باید در Robots.txt مسدود کنیم؟
در بسیاری از سایتهای وردپرسی ممکن است چنین قانونی را ببینید:
Disallow: /wp-admin/
اما نباید صرفاً با دیدن این دستور آن را در همه سایتها کپی کنیم.
وردپرس خودش برای بخشهایی از این ساختار تمهیدات خاصی دارد و مهمتر از آن، هدف ما باید جلوگیری از Crawl URLهای غیرضروری باشد، نه اینکه هر چیزی که اسم admin دارد را کورکورانه مسدود کنیم.
همچنین مسدود کردن wp-admin جایگزین اقدامات امنیتی نیست.
اگر هدف شما امنیت سایت است، Robots.txt ابزار امنیتی محسوب نمیشود.
آیا فایلهای CSS و JavaScript را در Robots.txt مسدود کنیم؟
معمولاً نه.
این یکی از اشتباهات قدیمی در سئو است.
گوگل برای درک درست صفحات میتواند به منابعی مانند CSS و JavaScript نیاز داشته باشد. بنابراین مسدود کردن این فایلها بدون دلیل میتواند توانایی Google برای مشاهده و رندر کردن صفحه را محدود کند.
مثلاً چنین قوانینی را بدون بررسی نباید اضافه کنیم:
Disallow: /css/
Disallow: /js/
اگر فایلهای CSS یا JavaScript برای نمایش صحیح صفحه ضروری باشند، بهتر است اجازه دهیم خزنده بتواند به آنها دسترسی داشته باشد.
بنابراین قبل از اضافه کردن هر Disallow از خودتان بپرسید:
آیا واقعاً میخواهم Googlebot این منبع را Crawl نکند؟
اگر پاسخ مشخصی ندارید، بهتر است آن را مسدود نکنید.
آیا Robots.txt برای جلوگیری از Crawl صفحات فیلتر فروشگاه مناسب است؟
اینجا جواب به ساختار سایت بستگی دارد.
فرض کنید یک فروشگاه چنین URLهایی تولید میکند:
/products?brand=xiaomi
/products?brand=ecovacs
/products?color=white
/products?sort=price
اگر تعداد این URLها بسیار زیاد باشد، ممکن است بخواهیم Crawl آنها را مدیریت کنیم.
اما قبل از اینکه همه این URLها را با Robots.txt ببندیم باید بررسی کنیم:
آیا این صفحات ارزش سئویی دارند؟
آیا برایشان Impression دریافت میکنیم؟
آیا قرار است در آینده روی آنها رتبه بگیریم؟
آیا محتوای متفاوتی دارند؟
آیا لینک خارجی دارند؟
آیا Google آنها را قبلاً کشف کرده است؟
اگر یک صفحه فیلتر ارزش سئویی دارد، مسدود کردن آن در Robots.txt میتواند تصمیم اشتباهی باشد.
Robots.txt را نباید جایگزین استراتژی URL سایت کنیم.
Robots.txt و Sitemap چه ارتباطی با یکدیگر دارند؟
این دو فایل نقش متفاوتی دارند اما میتوانند در کنار یکدیگر استفاده شوند.
Sitemap
به موتور جستجو میگوید:
این URLها برای سایت من مهم هستند.
Robots.txt
به خزنده میگوید:
برای Crawl کردن، این مسیرها را دنبال کن یا نکن.
مثلاً:
User-agent: *
Disallow: /admin/
Sitemap: https://example.com/sitemap.xml
در این مثال:
مسیر
/admin/برای Crawl مسدود شده.Sitemap سایت نیز معرفی شده است.
اما نکته مهم این است که وجود یک URL در Sitemap به معنی ایندکس قطعی آن URL نیست.
Sitemap یکی از سیگنالهای کشف و اولویتدهی URLهاست و Robots.txt نیز یکی از ابزارهای کنترل Crawl است.
آیا باید Sitemap را در Robots.txt قرار دهیم؟
اجباری نیست.
میتوانید Sitemap را از طریق Google Search Console نیز به گوگل معرفی کنید.
اما قرار دادن آدرس Sitemap در Robots.txt یک روش استاندارد و مفید برای معرفی محل Sitemap به خزندههاست.
مثلاً:
Sitemap: https://example.com/sitemap.xml
اگر سایت چند Sitemap دارد و یک Sitemap Index استفاده میکند، بهتر است URL همان Sitemap Index را معرفی کنیم:
Sitemap: https://example.com/sitemap_index.xml
البته در هر سایت باید آدرس واقعی و قابل دسترس Sitemap را قرار داد؛ نه اینکه صرفاً از یک الگوی عمومی کپی کنیم.
چگونه Robots.txt را بررسی کنیم؟
اولین و سادهترین کار این است که مستقیماً فایل را باز کنید:
https://example.com/robots.txt
بعد این موارد را بررسی کنید:
۱. آیا فایل وجود دارد؟
اگر با خطای 404 مواجه شدید، باید بررسی کنیم آیا سایت واقعاً به Robots.txt نیاز دارد و آیا سرور آن را به شکل صحیح ارائه میکند.
۲. آیا فایل قابل دسترسی است؟
Robots.txt باید برای خزندهها قابل دریافت باشد.
۳. آیا Disallow: / وجود دارد؟
اگر سایت قرار است در گوگل دیده شود، وجود چنین قانونی باید فوراً بررسی شود.
۴. آیا صفحات مهم مسدود شدهاند؟
مثلاً:
Disallow: /blog/
اگر تمام مقالات سایت در /blog/ قرار دارند، این قانون میتواند مشکل جدی ایجاد کند.
۵. آیا Sitemap صحیح معرفی شده است؟
آدرس Sitemap را باز کنید و مطمئن شوید واقعاً وجود دارد.
بررسی Robots.txt با مثال واقعی نارنجیفای
در پروژه خودمان یک نکته بسیار مهم داریم.
سایت نارنجیفای از وردپرس به Laravel منتقل شده و ساختار Sitemap آن نیز تغییر کرده است.
بنابراین نمیتوانیم صرفاً یک فایل آماده از اینترنت برداریم و روی سایت قرار دهیم.
باید ابتدا ساختار فعلی سایت را بررسی کنیم:
robots.txt
↓
Sitemap Index
↓
static-sitemap.xml
portfolio-sitemap.xml
blog-sitemap.xml
و بعد بررسی کنیم که:
URLهای مهم سایت Crawlable هستند؟
Sitemapها با URLهای فعلی هماهنگاند؟
صفحات 404 قدیمی هنوز در Sitemap وجود دارند؟
URLهای مهم شهری در آینده چگونه باید وارد ساختار Sitemap شوند؟
هیچ مسیر مهمی به اشتباه Disallow نشده است؟
این دقیقاً همان تفاوت بین کپی کردن یک Robots.txt آماده و تنظیم Robots.txt بر اساس معماری واقعی سایت است.
اشتباهات رایج در تنظیم Robots.txt
۱. استفاده از Disallow: /
این یکی از خطرناکترین اشتباهات است:
User-agent: *
Disallow: /
این قانون میتواند تمام سایت را از Crawl شدن بازدارد.
۲. تصور اینکه Robots.txt صفحه را از گوگل حذف میکند
این تصور اشتباه است.
اگر هدف حذف صفحه از نتایج جستجو است، باید از روش مناسب مانند noindex استفاده شود، البته به شکلی که Googlebot بتواند دستور noindex را مشاهده کند.
۳. مسدود کردن CSS و JavaScript
بدون اینکه بدانیم این منابع چه نقشی در نمایش صفحه دارند، نباید آنها را مسدود کنیم.
۴. کپی کردن Robots.txt سایت دیگر
ممکن است یک فایل برای سایت دیگری کاملاً مناسب باشد ولی برای سایت شما فاجعه ایجاد کند.
ساختار URL هر سایت متفاوت است.
۵. مسدود کردن صفحات مهم
گاهی مدیر سایت برای کاهش Crawl، مسیرهایی را میبندد که اتفاقاً مهمترین صفحات سئو هستند.
۶. استفاده از Robots.txt به عنوان ابزار امنیتی
Robots.txt عمومی است.
هر کسی میتواند آن را مشاهده کند.
بنابراین نباید مسیرهای حساس یا خصوصی را صرفاً برای پنهان کردن آنها در Robots.txt قرار داد.
اگر اطلاعاتی واقعاً محرمانه است، باید با روشهای مناسب احراز هویت و کنترل دسترسی از آن محافظت شود.
چکلیست نهایی Robots.txt
قبل از انتشار یا تغییر فایل Robots.txt این موارد را بررسی کنید:
⬜ فایل در
/robots.txtقرار دارد.⬜ فایل با HTTP Status مناسب در دسترس است.
⬜
Disallow: /بهاشتباه وجود ندارد.⬜ صفحات مهم سایت مسدود نشدهاند.
⬜ CSS و JavaScript ضروری مسدود نشدهاند.
⬜ Sitemap صحیح معرفی شده است.
⬜ URL Sitemap واقعاً وجود دارد.
⬜ مسیرهای خصوصی صرفاً با Robots.txt محافظت نشدهاند.
⬜ قوانین برای User-agent صحیح نوشته شدهاند.
⬜ بعد از تغییر، فایل دوباره بررسی شده است.
⬜ URLهای مهم با URL Inspection بررسی شدهاند.
⬜ تغییرات Robots.txt با استراتژی ایندکس سایت هماهنگ است.
سوالات متداول درباره Robots.txt
آیا هر سایت به Robots.txt نیاز دارد؟
وجود آن برای همه سایتها الزام مطلق نیست، اما داشتن یک فایل صحیح میتواند برای مدیریت Crawl و معرفی Sitemap مفید باشد.
آیا Robots.txt روی رتبه سایت تأثیر مستقیم دارد؟
خود فایل Robots.txt یک عامل مستقیم رتبهبندی نیست؛ اما تنظیم اشتباه آن میتواند مانع Crawl شدن صفحات مهم شود و در نتیجه روی دیدهشدن محتوای سایت اثر منفی بگذارد.
آیا Robots.txt باعث Noindex شدن صفحه میشود؟
خیر. Disallow بهطور مستقیم معادل noindex نیست.
آیا میتوانیم یک صفحه خاص را با Robots.txt ببندیم؟
بله، میتوان مسیر مشخصی را با Disallow محدود کرد؛ اما قبل از این کار باید مطمئن شوید صفحه موردنظر نباید Crawl شود.
آیا Sitemap را باید حتماً داخل Robots.txt قرار دهیم؟
خیر، اجباری نیست؛ اما معرفی Sitemap در Robots.txt یکی از روشهای استاندارد برای اعلام محل Sitemap به خزندههاست.
اگر Robots.txt اشتباه تنظیم شود چه اتفاقی میافتد؟
اگر مسیرهای مهم سایت مسدود شوند، خزندهها ممکن است نتوانند آن صفحات را Crawl کنند. به همین دلیل هر تغییر در Robots.txt باید با دقت بررسی شود.
جمعبندی
قبل از استفاده از Disallow نیز باید مطمئن شویم که URL موردنظر ارزش سئویی ندارد و قرار نیست در آینده برای آن رتبه بگیریم.
برای یک سایت کوچک ممکن است یک Robots.txt بسیار ساده کافی باشد؛ اما برای سایتهای فروشگاهی، سایتهای بزرگ یا پروژههایی با URLهای پارامتری، فیلترها و صفحات متعدد، تنظیم این فایل باید بر اساس معماری واقعی سایت انجام شود.
مقالاتی که شاید برایتان جالب باشند :)
Canonical چیست
با مفهوم Canonical و نحوه معرفی نسخه اصلی صفحات به موتورهای جستجو آشنا شوید.
اگر به دنبال خدمات سئو و بهینهسازی سایت در ساری هستید، میتوانید صفحه سئو در ساری نارنجیفای را نیز ببینید.
جمعبندی و نتیجهگیری
Robots.txt یکی از سادهترین فایلهای سایت است، اما یک اشتباه کوچک در آن میتواند روی نحوه Crawl شدن سایت تأثیر زیادی بگذارد. مهمترین نکته این است که Crawl و Index را با یکدیگر اشتباه نگیریم. Robots.txt عمدتاً برای کنترل دسترسی خزندهها به مسیرهای مختلف سایت استفاده میشود و نباید آن را به عنوان ابزار اصلی حذف صفحات از نتایج جستجو در نظر گرفت.
ثبت نظر جدید
هنوز نظری ثبت نشده است. اولین نفر باشید!