آشنایی با روال ساخت فایل robots.txt بهینه

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

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

ساخت فایل robots.txt

تصویر(۱)

پروتکل استثناء ربات

فایل robots.txt برای اولین بار داخل سند A Standard for Robot Exclusion در سال ۱۹۹۴ تعریف شد و سپس در پیش‌نویس مشخصات اینترنتی سال ۱۹۹۶ با عنوان A Method for Web Robots Control ‌بروزرسانی گردید. هر دو سند یک روش تجزیه بسیار سختگیرانه را مشخص کردند که باعث شد موتورهای جستجوی بزرگی مانند گوگل از یک روش تجزیه منعطف‌ تری استفاده نمایند.

نحوه ساخت فایل robots.txt

تصویر(۲)

با تجزیه سختگیرانه، فایل‌های robots.txt نادرست می‌ توانند منجر به خزیدن غیر منتظره شوند. روش تجزیه منعطف‌ مشکلات متعددی را که در فایل‌ های robots.txt دیده شده است، برطرف می‌ کند. این روش در واقع همان راهکاری است که مدیر وب‌ سایت هنگام نوشتن و ساخت فایل robots.txt در نظر خواهد گرفت.

برای روشن شدن قضیه در زیر مثالی درج شده است:

User-agent: *
Disallow: /

با تفسیر منعطف، عبارت بالا می‌ تواند به این صورت معنا شود:

User-agent: *
Disallow:

اما با تفسیر سختگیرانه از اسناد اصلی و بروزرسانی‌ شده معنا به صورت زیر خواهد بود:

User-agent: *
Disallow: /

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

فایل پایه‌ای robots.txt

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

User-agent: *
Disallow:

رایج ترین مشکلات فایل robots.txt

مشکلات فایل robots.txt زمانی شروع می ‌شوند که اوضاع پیچیده‌ تر گردد. برای مثال، ممکن است بخواهید بیش از یک ربات را هدف قرار دهید، نظراتی اضافه کنید یا از افزونه ‌هایی مانند crawl-delay و wildcards استفاده نمایید. تمام ربات‌ ها همه دستورات را درک نمی‌ کنند و همین باعث می‌ شود که فایل robots.txt دچار پیچیدگی و مشکلات گردد.

– خطوط خالی

پیش‌نویس، قالب فایل فوق باید به صورت زیر باشد:

<Field> ":" <value>

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

User-agent: *
Disallow: /

اگر پیش‌ نویس را به‌ صورت سختگیرانه اعمال کنید، دستورات بالا دو رکورد تفسیر می‌ شوند. البته هر دو رکورد ناقص هستند. اولین رکورد هیچ قانونی ندارد و دومین مورد هم فاقد User-Agent است. از همین رو هر دو مورد ممکن است نادیده گرفته شوند و در نتیجه، فایل robots.txt عملاً خالی در نظر گرفته شود، که معادل این حالت خواهد بود:

User-agent: *
Disallow:

این مورد کاملاً برخلاف هدفی است که مدیر وب سایت در نظر گرفته بود. با این‌حال، برخی از ربات‌ ها مانند Googlebot رویکرد متفاوتی برای تجزیه فایل robots.txt دارند و خطوط خالی را حذف کرده و آن را به روشی که احتمالاً مدنظر مدیر وب‌ سایت بوده است، تفسیر می‌ کنند.

User-agent: *
Disallow: /

اگر مایلید تا وب سایت شما امن باشد، توصیه می شود که از خطوط خالی درون یک رکورد استفاده نکنید. با این کار، ربات‌ های بیشتری فایل robots.txt را به همان صورتی که مدنظر بوده است، تفسیر خواهند کرد.

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

User-agent: a
Disallow: /path1/
User-agent: b
Disallow: /path2/

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

User-agent: a
Disallow: /path1/
Disallow: /path2/

یا

User-agent: a
User-agent: b
Disallow: /path1/
Disallow: /path2/
Disallow: /path2/

به همین دلیل توصیه می شود که رکوردها را جدا کنید.

ساخت فایل robots.txt - مجموعه ناقص رکوردها

تصویر(۳)

– مجموعه ناقص رکوردها

رکورد عموما با یک یا چند خط User-agent شروع می‌ شود که مشخص می ‌کند این مورد به کدام ربات ‌ها مربوط می ‌شود. سپس دستورالعمل‌ های “Disallow” و “Allow” برای آن ربات ارائه می گردد. در واقع یک رکورد از یک خط User-agent و یک دستور تشکیل می ‌شود. البته اگر بخواهید اجازه دهید کل سایت شما خزیده شود، باید یک دستور اضافه کنید.

به‌ جای استفاده از:

User-agent: *

باید از دستور زیر بهره ببرید:

User-agent: *
Disallow:

– کامنت ها

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

# robots.txt version 1
User-agent: * # handle all bots
Disallow: /

ربات های زیادی وجود دارند که تجزیه این موضوع را به‌ طور کامل خراب می‌ کنند و آن را به ‌عنوان:

User-agent: *
Disallow:

در نظر می گیرند از همین رو توصیه می شود که هنگام ساخت فایل robots.txt هیچ کامنتی درون آن نداشته باشید تا توسط ربات‌ های بیشتری به ‌درستی پردازش شود.

– رکوردهایی با چندین User-agent

شما می توانید در فایل robots.txt چندین User-agent را هدف قرار دهید و مجموعه‌ ای از قوانین را داشته باشید که به همه آنها اعمال شود:

User-agent: bot1
User-agent: bot2
Disallow: /

البته پردازش این فایل برای ربات ها بسیار پیچیده است و مشاهده شده که به این صورت تفسیر می‌ شود:

User-agent: bot1
Disallow:
User-agent: bot2
Disallow: /

یا حتی:

User-agent: bot1
Disallow:
User-agent: bot2
Disallow:

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

– ریدایرکت‌ ها به هاست یا پروتکل دیگر

در صورت دریافت پاسخ سرور که نشان‌ دهنده ریدایرکت است (کد وضعیت HTTP 3XX)، ربات باید ریدایرکت‌ ها را دنبال کند تا زمانی که یک منبع پیدا شود. با این حال، ربات های زیادی این قابلیت را ندارند. توصیه می‌ شود که در کد و تنظیمات فایل robots.txt ریدایرکتی نداشته باشید. شما باید یک فایل robots.txt جداگانه در هر هاست و برای هر پروتکل، داشته باشید.

ساخت فایل robots.txt - اجازه دسترسی به ربات ها

تصویر(۴)

 Wildcard و برخورد با آن

wildcards توسط موتورهای جستجوی بزرگ پشتیبانی می ‌شوند. هرگاه بخواهید دسترسی به URL ها با پسوند خاصی را مسدود کنید، معمولاً قوانین مشابه مورد زیر هستند:

User-agent: *
Disallow: .doc

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

User-agent: *
Disallow: /.doc

و قانون بالا تنها دسترسی به URL هایی که با doc./ شروع می‌ شوند را مسدود می‌ کند. برای مسدود کردن دسترسی به تمام فایل ‌هایی که با doc. تمام می ‌شوند، شما باید از این دستور بهره ببرید:

User-agent: *
Disallow: /*.doc

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

User-agent: *
Disallow: /*?parameter1
Disallow: /*&parameter1

ترتیب رکوردها در هنگام ایجاد فایل robots.txt مهم است

ربات باید اولین رکوردی را که شامل یک خط User-agent است و مقدار آن حاوی توکن نام ربات به‌ عنوان زیر رشته باشد را به عنوان نقطه آغازین در نظر بگیرد. نام‌ها به بزرگ یا کوچک نوشتن حروف حساس نیستند. اگر چنین رکوردی وجود نداشته باشد، باید اولین رکوردی را که دارای خط User-agent بوده و با مقدار “*” مقدار دهی شده است در نظر داشته باشد. چنانچه هیچ رکوردی این شرایط را برآورده نکردند یا هیچ رکوردی وجود نداشت، دسترسی نامحدود خواهد بود.

برای ارزیابی اینکه آیا دسترسی به یک URL مجاز است یا خیر، ربات باید تلاش کند تا مسیرهای موجود در خطوط Allow و Disallow را با URL، به ترتیبی که در رکورد وجود دارد، مقایسه کند. اولین تطابق پیدا شده به عنوان دستور کار در نظر گرفته می شود. چنانچه هیچ تطابقی پیدا نشد، فرض پیش ‌فرض این است که URL مجاز است.

با این حال، ربات‌های زیادی وجود دارند که این موضوع را به‌درستی پردازش نمی‌ کنند. به همین دلیل توصیه می گردد که رکوردها و خطوط Allow و Disallow را مرتب کنید تا مشکلات در حین تجزیه کاهش یابند.

رکوردها هرگز تجمیع نمی‌ شوند

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

User-Agent: *
Disallow: /url/1
User-Agent: somebot
Disallow: /url/2
User-Agent: somebot
Crawl-delay: 5

برخی افراد ناآگاه تصور می نماید که somebot به‌ صورت زیر تفسیر می شود:

User-Agent: somebot
Disallow: /url/1
Disallow: /url/2
Crawl-delay: 5

این برداشت نه تنها صحیح نیست بلکه معمولاً تفسیر آن به شکل زیر است که اشتباه محض می باشد:

User-Agent: somebot
Disallow: /url/2

اگر می‌خواهید یک ربات همه رکوردها را اعمال کرده و در نظر بگیرد باید قوانین را تکرار کنید.

رمزگذاری کاراکترهای غیر US-ASCII

بسیاری از افراد به این نکته توجه نمی‌ کنند که یک خط قانون مجموعه محدودی از کاراکترهای مجاز را شامل می شود. کاراکترهایی که در مجموعه US-ASCII قرار ندارند باید رمزگذاری شوند. از همین رو به‌ جای استفاده از

User-agent: *
Disallow: /ä

باید از نسخه رمزگذاری ‌شده استفاده کنید. این نسخه ممکن است برای مجموعه‌ کاراکترهای مختلف متفاوت باشد. اگر از UTF-8 استفاده می کنید، باید از رکورد زیر بهره ببرید:

User-agent: *
Disallow: /%C3%A4

همچنین برای ISO-8859-1 هم رکورد زیر گزینه خوبی خواهد بود:

User-agent: *
Disallow: /%E4

فرمت فایل: فقط کاراکترهای US-ASCII مجاز می باشند

فایل باید متن ساده و توصیف دقیقی مشابه BNF داشته باشد. با این حال، اغلب دیده می شود که افراد این بخش را نادیده می‌گیرند.

ساخت فایل robots.txt و بهنیه سازی آن

تصویر(۵)

در یک فایل robots.txt تنها کاراکترهای US-ASCII مجاز هستند. حتی شما نمی توانید از کاراکترهای غیر US-ASCII در کامنت ها بهره ببرید.

اندازه فایل

موتورهای جستجو فایل‌ های robots.txt حجیم را به‌ درستی پردازش نمی‌ کنند. به عنوان مثال، گوگل محدودیت ۵۰۰ کیلوبایت دارد و دیگران ممکن است محدودیت‌ های کمتری نیز داشته باشند.

نتیجه گیری:

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

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

اسکرول به بالا