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

در این مقاله شیوه‌ی استفاده کردن از robots.txt و نحوه‌ی تنظیم کردن آن را بررسی می‌کنیم. علاقه‌مندان به وب و طراحی سایت با ما همراه شوید.

فایل robots.txt چیست؟

قبل از آشنایی با ساختار robots.txt می‌بایست روش کار موتورهای جست‌وجو را بدانیم. موتورهای جست‌وجو خزنده‌ها یا crawlers خود را سراغ وب‌سایت‌ها می‌فرستند و روزانه بسته به ترافیک و حجم صفحات وب‌سایت و همین‌طور سرعت بارگذاری وب‌سایت، تعدادی از صفحات را دقیقاً بررسی می‌کنند. خرنده در حقیقت یک نرم‌افزار است که محتویات وب‌سایت را بررسی می‌کند و حتی فایل‌ها و صفحاتی که کمتر کسی به آن نیاز دارد را مرور می‌کند. در ادامه نتیجه‌ی بررسی و محتوایی که خزنده پیدا کرده، ذخیره می‌شود و موتور جست‌وجو می‌تواند کاربران را به آن ارجاع دهد. به عبارت دیگر صفحاتی که خزنده پیدا کرده، اصطلاحاً ایندکس یا اندیس‌گذاری می‌شود.

نام دیگر خزنده، Bot یا Spider است. بات یا همان ربات، تمام محتویات وب‌سایت را بررسی می‌کند مگر آنکه به آن بگوییم که کدام بخش‌ها می‌بایست توسط موتور جست‌وجو ایندکس شوند. معمولاً برعکس این فرآیند انجام می‌شود و به ربات می‌گوییم که چه صفحاتی را ایندکس نکند.

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

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

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

www.yoursite.com/robots.txt

نمونه‌ای از یک فایل ربات کامل:

آیا ربات‌ها (خزندگان موتورهای جست‌وجو) همیشه از فرامین robots.txt پیروی می‌کنند؟

این سوال همیشگی برای وب‌مسترها مطرح است که آیا رباتی مثل ربات گوگل، دقیقاً طبق دستوراتی که در فایل robots.txt داده شده، عمل می‌کند یا ممکن است برخی صفحات منع شده را در نتایج گوگل رویت کنیم و متوجه شویم که ربات گوگل آنها را ایندکس کرده است؟

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

ساختار فایل robots.txt چگونه است و چگونه می‌توان یک فایل robots.txt نوشت؟

در فایل robots.txt چند بخش اصلی و مهم وجود دارد که در ادامه به هر یک اشاره می‌کنیم و در نهایت می‌توان با شناخت تمام بخش‌ها، یک فایل robots.txt را تکمیل کرد و هر دستوری که موردنیاز است، به آن اضافه کرد.

User Agent یا تعریف ربات

اولین بخش فایل robots.txt، بخشی است که ربات هدف را مشخص می‌کند. به عنوان مثال می‌توان به ربات گوگل یا Googlebot یک نوع دستور داد و به ربات Bingbot صفحات دیگری را معرفی کرد که نباید ایندکس شوند.

دستور زیر به این معنی است که تمام ربات‌ها می‌بایست از دستوراتی که در ادامه نوشته می‌شود، تبعیت کنند:

User-agent: *

اما به جای * می‌توان نام ربات‌ها را نوشت، مثل نمونه‌ی زیر:

User-agent: Googlebot

[صفحاتی که نباید ایندکس شوند]

User-agent: Googlebot-Image/1.0

[صفحاتی که نباید ایندکس شوند]

User-agent: Bingbot

[صفحاتی که نباید ایندکس شوند]

به این ترتیب می‌توان به هر ربات، لیستی از صفحات ممنوعه داد. لیست کامل User-agentها را در این آدرس مشاهده کنید.

وارد کردن مسیرها و صفحاتی که نباید ایندکس شوند

برای محدود کردن دسترسی ربات به مسیری مثل ادمین و تمام مسیرهای زیرمجموعه‌ی آن، از دستور زیر استفاده کنید:

Disallow: /admin/

با دستور فوق، ربات‌ها مسیرهایی مثل yoursite.com/admin و ursite.com/admin/login و همین‌طور فایل‌های موجود مثل yoursite.com/admin/files/secret.html را بررسی نمی‌کنند. اگر مقصود شما مسدود کردن یک صفحه‌ی خاص است، آدرس آن را مثل نمونه‌ی زیر وارد کنید:

Disallow: /public/exception.html

برای اضافه کردن مسیرهای بیشتر، هر یک را در خطی جدید اضافه کنید:

Disallow: /private/

Disallow: /admin/

Disallow: /cgi-bin/

Disallow: /temp/

و دستور زیر نیز تمام مسیرها و صفحات وب‌سایت را مسدود می‌کند!

Disallow: /

می‌توانید مسیرها را کمی پیچیده‌تر نیز تعریف کنید. با استفاده کردن از * و عبارت‌های بعد یا قبل از آن، می‌توان مسیرهای خاص را مسدود کرد. به عنوان مثال اگر بخواید تمام فایل‌های html موجود روی سرور شما که در مسیر /admin/ قرار دارند و ابتدای نامشان حرف a است را از دید ربات‌ها پنهان کنید، دستور زیر مفید فایده واقع می‌شود:

Disallow: /admin/a*

به این ترتیب صفحاتی که نامشان با حروف دیگر آغاز می‌شود، ایندکس می‌شوند و تنها مواردی که ابتدا حرف a و سپس عبارتی دیگر دارند، مسدود می‌شوند.

و اگر بخواهیم استثناء پیچیده‌تری تعریف کنیم، به عنوان مثال مسیرهایی که نامشان با a شروع شده و در ادامه عبارت یا مسیر خاصی دارند، ایندکس شوند، می‌بایست از دستور زیر استفاده کنیم:

Disallow: /admin/a*

Allow: /admin/a*/*

معنی عبارت فوق این است که فایلی مثل /admin/abc/a.html ایندکس می‌شود! حتی با وجود اینکه کمی بالاتر، مسیرهایی که با حرف a شروع شده را مسدود کرده‌ایم.

نحوه‌ی تعریف آدرس‌هایی که ربات مجاز است بررسی کند

همان‌طور که در بخش قبلی اشاره کردیم، دستور Allow برای مجاز قلمداد کردن مسیرها کاربرد دارد. مثل دستور زیر که تمام مسیرها را مجاز اعلام می‌کند:

Allow: /*

نقشه‌ی فایل یا Sitemap‌ را در ربات سایت اضافه کنید

نقشه‌ی سایت لیستی از تمام مسیرها و دقیق‌تر بگوییم، مطالب و پست‌های وب‌سایت را شامل می‌شود و پس از هر بروزرسانی، معمولاً بروز می‌شود و در نتیجه موتورهای جست‌وجو به سرعت متوجه اضافه شدن یک مطلب جدید می‌شوند و نیازی به انتظار طولانی‌مدت برای بررسی وب‌سایت توسط ربات‌ها نیست.

مسیر نقشه‌ی سایت را با دستور زیر در فایل ربات اضافه کنید:

Sitemap: [URL of sitemap]

به جای URL of sitemap مسیر نقشه‌ی سایت خود را به صورت کامل وارد کنید، مثل نمونه‌ی زیر:

Sitemap: //www.site.com/sitemap.xml

از ربات‌ها بخواهیم که پس از هر مراجعه، کمی صبر کنند!

اگر بروزرسانی‌های وب‌سایت شما کم است یا سرور بسیار ضعیفی دارید، بهتر است از ربات‌ها بخواهید که پس از خزیدن در هر صفحه، کمی صبر کنند و سپس سراغ صفحه‌ی بعدی بروند. به این منظور می‌بایست تأخیر را بر حسب ثانیه با دستور زیر مشخص کرد:

Crawl-delay: 8

و این یعنی ربات پس از بررسی هر صفحه، ۸ ثانیه صبر می‌کند.