خزنده های خودکار گوگل از پروتکل محرومیت روبات ها (REP) پشتیبانی می کنند. این بدان معناست که قبل از خزیدن در یک سایت، خزنده های گوگل فایل robots.txt سایت را دانلود و تجزیه می کنند تا اطلاعاتی در مورد قسمت هایی از سایت استخراج کنند که ممکن است خزیده شوند. REP برای خزندههای Google که توسط کاربران کنترل میشوند (به عنوان مثال، اشتراکهای فید)، یا خزندههایی که برای افزایش ایمنی کاربر استفاده میشوند (به عنوان مثال، تجزیه و تحلیل بدافزار) قابل اجرا نیست.
این صفحه تفسیر گوگل از REP را شرح می دهد. برای استاندارد اصلی، RFC 9309 را بررسی کنید.
فایل robots.txt چیست؟
اگر نمی خواهید خزنده ها به بخش هایی از سایت شما دسترسی داشته باشند، می توانید یک فایل robots.txt با قوانین مناسب ایجاد کنید. فایل robots.txt یک فایل متنی ساده است که حاوی قوانینی است که خزندهها میتوانند به بخشهایی از سایت دسترسی داشته باشند. به عنوان مثال، فایل robots.txt برای example.com ممکن است به شکل زیر باشد:
# This robots.txt file controls crawling of URLs under https://example.com. # All crawlers are disallowed to crawl files in the "includes" directory, such # as .css, .js, but Google needs them for rendering, so Googlebot is allowed # to crawl them. User-agent: * Disallow: /includes/ User-agent: Googlebot Allow: /includes/ Sitemap: https://example.com/sitemap.xml
اگر با robots.txt تازه کار هستید، با معرفی robots.txt شروع کنید. همچنین می توانید نکاتی را برای ایجاد فایل robots.txt بیابید.
محل فایل و دامنه اعتبار
شما باید فایل robots.txt را در دایرکتوری سطح بالای یک سایت، روی یک پروتکل پشتیبانی شده قرار دهید. URL فایل robots.txt (مانند سایر URL ها) به حروف کوچک و بزرگ حساس است. در مورد جستجوی گوگل، پروتکل های پشتیبانی شده HTTP، HTTPS و FTP هستند. در HTTP و HTTPS، خزنده ها فایل robots.txt را با درخواست GET غیرشرطی HTTP واکشی می کنند. در FTP، خزنده ها از یک فرمان استاندارد RETR (RETRIEVE) با استفاده از ورود ناشناس استفاده می کنند.
قوانین فهرست شده در فایل robots.txt فقط برای میزبان، پروتکل و شماره پورتی که فایل robots.txt در آن میزبانی می شود اعمال می شود.
نمونه هایی از URL های معتبر robots.txt
جدول زیر شامل نمونههایی از آدرسهای اینترنتی robots.txt و مسیرهای URL است که برای آنها معتبر هستند. ستون یک شامل URL یک فایل robots.txt است و ستون دو شامل دامنههایی است که آن فایل robots.txt برای آنها اعمال میشود و نمیخواهد.
نمونه های URL Robots.txt | |
---|---|
https://example.com/robots.txt | این حالت کلی است. برای سایر زیر دامنهها، پروتکلها یا شمارههای پورت معتبر نیست. برای همه فایلها در همه زیرشاخهها در همان میزبان، پروتکل و شماره پورت معتبر است.
معتبر برای:
معتبر نیست برای:
|
https://www.example.com/robots.txt |
robots.txt در یک زیر دامنه فقط برای آن زیر دامنه معتبر است.
معتبر برای: معتبر نیست برای:
|
https://example.com/folder/robots.txt |
فایل robots.txt معتبر نیست. خزنده ها فایل های robots.txt را در زیر شاخه ها بررسی نمی کنند. |
https://www.exämple.com/robots.txt |
IDN ها معادل نسخه های کد کد آنها هستند. RFC 3492 را نیز ببینید.
معتبر برای:
معتبر نیست برای: |
ftp://example.com/robots.txt |
معتبر برای:ftp://example.com/ معتبر نیست برای:https://example.com/ |
https://212.96.82.21/robots.txt |
یک robots.txt با یک آدرس IP به عنوان نام میزبان فقط برای خزیدن آن آدرس IP به عنوان نام میزبان معتبر است. این به طور خودکار برای همه وبسایتهایی که روی آن آدرس IP میزبانی میشوند معتبر نیست (اگرچه ممکن است فایل robots.txt به اشتراک گذاشته شود، در این صورت تحت نام میزبان مشترک نیز در دسترس خواهد بود).
معتبر برای: معتبر نیست برای: |
https://example.com:443/robots.txt |
شماره پورت های استاندارد (80 برای HTTP، 443 برای HTTPS، 21 برای FTP) معادل نام هاست پیش فرض آنها است.
معتبر برای:
معتبر نیست برای: |
https://example.com:8181/robots.txt |
فایلهای Robots.txt روی شمارههای پورت غیراستاندارد فقط برای محتوایی که از طریق آن شمارههای پورت در دسترس است معتبر هستند.
معتبر برای: معتبر نیست برای: |
رسیدگی به خطاها و کدهای وضعیت HTTP
هنگام درخواست فایل robots.txt، کد وضعیت HTTP پاسخ سرور بر نحوه استفاده از فایل robots.txt توسط خزندههای Google تأثیر میگذارد. جدول زیر نحوه برخورد Googlebot با فایلهای robots.txt را برای کدهای وضعیت مختلف HTTP خلاصه میکند.
رسیدگی به خطاها و کدهای وضعیت HTTP | |
---|---|
2xx (موفقیت) |
کدهای وضعیت HTTP که نشان دهنده موفقیت هستند، از خزندههای Google میخواهند فایل robots.txt را همانطور که توسط سرور ارائه شده است پردازش کنند. |
3xx (تغییر مسیر) |
گوگل حداقل پنج تغییر مسیر را طبق تعریف RFC 1945 دنبال می کند و سپس آن را متوقف می کند و آن را به عنوان 404 برای robots.txt در نظر می گیرد. این همچنین برای هر URL غیرمجاز در زنجیره تغییر مسیر اعمال می شود، زیرا خزنده به دلیل تغییر مسیرها نمی تواند قوانین را واکشی کند.
Google از تغییر مسیرهای منطقی در فایلهای robots.txt (فریمها، جاوا اسکریپت یا تغییر مسیرهای نوع تازهسازی متا) پیروی نمیکند. |
4xx (خطاهای مشتری) |
خزندههای Google با تمام خطاهای 4xx بهجز 429 برخورد میکنند، انگار که فایل robots.txt معتبری وجود ندارد. این به این معنی است که گوگل فرض می کند که هیچ محدودیتی برای خزیدن وجود ندارد.
برای محدود کردن سرعت خزیدن از کدهای وضعیت 401 و 403 استفاده نکنید. کدهای وضعیت 4xx، به جز 429، هیچ تاثیری بر نرخ خزیدن ندارند. بیاموزید که چگونه سرعت خزیدن خود را محدود کنید. |
5xx (خطاهای سرور) |
از آنجایی که سرور نمی تواند پاسخ قطعی به درخواست robots.txt گوگل بدهد، گوگل به طور موقت خطاهای سرور 5xx و 429 را طوری تفسیر می کند که گویی سایت به طور کامل غیر مجاز است. Google سعی میکند فایل robots.txt را بخزد تا زمانی که کد وضعیت HTTP بدون خطای سرور را دریافت کند. خطای 503 (سرویس در دسترس نیست) منجر به تلاش مجدد نسبتاً مکرر می شود. اگر robots.txt بیش از 30 روز در دسترس نباشد، Google از آخرین نسخه کش شده robots.txt استفاده خواهد کرد. اگر در دسترس نباشد، گوگل فرض می کند که هیچ محدودیتی برای خزیدن وجود ندارد.
اگر نیاز دارید خزیدن را به طور موقت به حالت تعلیق در آورید، توصیه می کنیم برای هر URL در سایت یک کد وضعیت HTTP 503 ارائه دهید. اگر بتوانیم تشخیص دهیم که سایتی به اشتباه پیکربندی شده است تا 5xx را به جای کد وضعیت 404 برای صفحات از دست رفته برگرداند، خطای 5xx از آن سایت را به عنوان یک 404 در نظر می گیریم. برای مثال، اگر پیام خطا در صفحه ای که یک صفحه را برمی گرداند کد وضعیت 5xx “صفحه یافت نشد” است، ما کد وضعیت را 404 تفسیر می کنیم (یافت نشد). |
سایر خطاها | فایل robots.txt که به دلیل مشکلات DNS یا شبکه قابل واکشی نیست، مانند مهلت زمانی، پاسخهای نامعتبر، بازنشانی یا قطع شدن اتصالات، و خطاهای قطعهسازی HTTP، به عنوان یک خطای سرور تلقی میشود. |
ذخیره سازی
Google معمولاً محتویات فایل robots.txt را حداکثر تا 24 ساعت در حافظه پنهان نگه میدارد، اما ممکن است در شرایطی که بهروزرسانی نسخه ذخیرهشده در حافظه پنهان امکانپذیر نباشد (مثلاً به دلیل مهلت زمانی یا خطاهای 5xx) آن را در حافظه پنهان نگه میدارد. پاسخ ذخیره شده در حافظه پنهان ممکن است توسط خزنده های مختلف به اشتراک گذاشته شود. Google ممکن است طول عمر حافظه پنهان را بر اساس حداکثر سن هدرهای HTTP Cache-Control افزایش یا کاهش دهد.
فرمت فایل
فایل robots.txt باید یک فایل متنی ساده با کدگذاری UTF-8 باشد و خطوط باید با CR، CR/LF یا LF از هم جدا شوند.
Google خطوط نامعتبر را در فایلهای robots.txt، از جمله علامت ترتیب بایت یونیکد (BOM) در ابتدای فایل robots.txt نادیده میگیرد و فقط از خطوط معتبر استفاده میکند. به عنوان مثال، اگر محتوای دانلود شده به جای قوانین robots.txt HTML باشد، گوگل سعی می کند محتوا را تجزیه کند و قوانین را استخراج کند و هر چیز دیگری را نادیده بگیرد.
به طور مشابه، اگر رمزگذاری نویسه فایل robots.txt UTF-8 نباشد، Google ممکن است نویسههایی را که بخشی از محدوده UTF-8 نیستند نادیده بگیرد و قوانین robots.txt را نامعتبر کند.
Google در حال حاضر محدودیت اندازه فایل robots.txt را 500 کیلوبایت (KiB) اعمال می کند. محتوایی که پس از حداکثر اندازه فایل است نادیده گرفته می شود. می توانید با ادغام قوانینی که منجر به ایجاد یک فایل robots.txt بزرگتر می شود، اندازه فایل robots.txt را کاهش دهید. به عنوان مثال، مطالب حذف شده را در یک فهرست جداگانه قرار دهید.
نحو
خطوط معتبر robots.txt از یک فیلد، یک کولون و یک مقدار تشکیل شده است. فضاها اختیاری هستند، اما برای بهبود خوانایی توصیه می شود. فاصله در ابتدا و انتهای خط نادیده گرفته می شود. برای اضافه کردن نظرات، قبل از نظر خود با کاراکتر # قرار دهید. به خاطر داشته باشید که همه چیز بعد از کاراکتر # نادیده گرفته می شود. قالب کلی این است <field>: <value><#optional-comment>.
Google از فیلدهای زیر پشتیبانی می کند (فیلدهای دیگر مانند crawl-delay پشتیبانی نمی شوند):
user-agent: مشخص می کند که قوانین روی کدام خزنده اعمال می شود.
اجازه: یک مسیر URL که ممکن است خزیده شود.
Disallow: یک مسیر URL که ممکن است خزیده نشود.
نقشه سایت: URL کامل نقشه سایت.
فیلدهای مجاز و غیر مجاز نیز قوانین نامیده می شوند (که به عنوان دستورالعمل نیز شناخته می شوند). این قوانین همیشه به شکل قانون مشخص می شوند: [path] که در آن [path] اختیاری است. به طور پیش فرض، هیچ محدودیتی برای خزیدن برای خزنده های تعیین شده وجود ندارد. خزنده ها قوانین را بدون [مسیر] نادیده می گیرند.
مقدار [path]، در صورت مشخص شدن، نسبت به ریشه وب سایت است که فایل robots.txt از آنجا واکشی شده است (با استفاده از همان پروتکل، شماره پورت، میزبان و نام دامنه). مقدار مسیر باید با / شروع شود تا ریشه را مشخص کند و مقدار آن به حروف کوچک و بزرگ حساس است. درباره تطبیق URL بر اساس مقادیر مسیر بیشتر بیاموزید.
عامل کاربر
خط user-agent مشخص می کند که کدام قوانین خزنده اعمال می شود. برای فهرست جامعی از رشتههای عامل کاربر که میتوانید در فایل robots.txt خود استفاده کنید، خزندهها و رشتههای عامل کاربر Google را ببینید.
مقدار خط user-agent به حروف بزرگ و کوچک حساس نیست.
اجازه ندادن
قانون عدم اجازه مسیرهایی را مشخص می کند که خزنده های شناسایی شده توسط خط کاربر-عاملی که قانون عدم اجازه با آن گروه بندی شده است، نباید به آنها دسترسی داشته باشند. خزنده ها قانون بدون مسیر را نادیده می گیرند.
Google نمی تواند محتوای صفحاتی را که برای خزیدن مجاز نیستند ایندکس کند، اما همچنان ممکن است URL را ایندکس کند و بدون قطعه در نتایج جستجو نشان دهد. نحوه مسدود کردن نمایه سازی را بیاموزید.
مقدار قانون عدم اجازه به حروف کوچک و بزرگ حساس است.
استفاده:
disallow: [path]
اجازه می دهد
قانون اجازه مسیرهایی را مشخص می کند که خزنده های تعیین شده ممکن است به آنها دسترسی داشته باشند. هنگامی که هیچ مسیری مشخص نشده است، قانون نادیده گرفته می شود.
مقدار قانون مجاز به حروف کوچک و بزرگ حساس است.
استفاده:
allow: [path]
نقشه سایت
گوگل، بینگ و سایر موتورهای جستجوی اصلی از قسمت نقشه سایت در robots.txt که توسط sitemaps.org تعریف شده است، پشتیبانی می کنند.
مقدار فیلد نقشه سایت به حروف بزرگ و کوچک حساس است.
استفاده:
sitemap: [absoluteURL]
خط [absoluteURL] به محل نقشه سایت یا فایل فهرست نقشه سایت اشاره می کند. این باید یک URL کاملا واجد شرایط، شامل پروتکل و میزبان باشد، و نیازی به کدگذاری URL نیست. لزومی ندارد که URL در همان میزبان فایل robots.txt باشد. می توانید چندین فیلد نقشه سایت را مشخص کنید. فیلد نقشه سایت به هیچ عامل کاربری خاصی وابسته نیست و ممکن است توسط همه خزنده ها دنبال شود، مشروط بر اینکه برای خزیدن غیرمجاز نباشد.
به عنوان مثال:
user-agent: otherbot disallow: /kale sitemap: https://example.com/sitemap.xml sitemap: https://cdn.example.org/other-sitemap.xml sitemap: https://ja.example.org/テスト-サイトマップ.xml
گروه بندی خطوط و قوانین
میتوانید قوانینی را که برای چندین عامل کاربر اعمال میشوند، با تکرار خطوط عامل کاربر برای هر خزنده، گروهبندی کنید.
به عنوان مثال:
user-agent: a disallow: /c user-agent: b disallow: /d user-agent: e user-agent: f disallow: /g user-agent: h
در این مثال چهار گروه قانون متمایز وجود دارد:
- یک گروه برای عامل کاربر “a”.
- یک گروه برای عامل کاربر “b”.
- یک گروه برای عوامل کاربر “e” و “f”.
- یک گروه برای عامل کاربر “h”.
برای توضیحات فنی یک گروه، بخش 2.1 REP را ببینید.
ترتیب تقدم برای عوامل کاربر
فقط یک گروه برای یک خزنده خاص معتبر است. خزندههای Google با یافتن گروهی با خاصترین عامل کاربر که با عامل کاربر خزنده مطابقت دارد، در فایل robots.txt گروه صحیحی از قوانین را تعیین میکنند. گروه های دیگر نادیده گرفته می شوند. همه متن های غیر منطبق نادیده گرفته می شوند (به عنوان مثال، هر دو googlebot/1.2 و googlebot* معادل googlebot هستند). ترتیب گروه ها در فایل robots.txt بی ربط است.
اگر بیش از یک گروه خاص برای یک عامل کاربر اعلام شده باشد، همه قوانین از گروه های قابل اعمال برای عامل کاربر خاص به صورت داخلی در یک گروه واحد ترکیب می شوند. گروه های خاص عامل کاربر و گروه های جهانی (*) با هم ترکیب نمی شوند.
نمونه ها
تطبیق فیلدهای عامل کاربر
user-agent: googlebot-news (group 1) user-agent: * (group 2) user-agent: googlebot (group 3)
به این ترتیب خزنده ها گروه مربوطه را انتخاب می کنند:
گروه دنبال شده در هر خزنده | |
---|---|
اخبار Googlebot | googlebot-news از گروه 1 پیروی می کند، زیرا گروه 1 خاص ترین گروه است. |
Googlebot (وب) | googlebot گروه 3 را دنبال می کند. |
Googlebot Storebot | Storebot-Google از گروه 2 پیروی می کند، زیرا گروه Storebot-Google خاصی وجود ندارد. |
Googlebot News (هنگام خزیدن تصاویر) | Googlebot News (هنگام خزیدن تصاویر) |
ربات دیگر (وب) | سایر خزنده های گوگل گروه 2 را دنبال می کنند. |
ربات دیگر (اخبار) |
سایر خزندههای Google که محتوای خبری را میخزند، اما بهعنوان googlebot-news شناسایی نمیشوند، گروه 2 را دنبال میکنند. حتی اگر ورودی برای یک خزنده مرتبط وجود داشته باشد، فقط در صورتی معتبر است که به طور خاص مطابقت داشته باشد. |
گروه بندی قوانین
اگر چندین گروه در یک فایل robots.txt وجود داشته باشد که مربوط به یک عامل کاربر خاص است، خزندههای Google به صورت داخلی گروهها را ادغام میکنند. به عنوان مثال:
user-agent: googlebot-news disallow: /fish user-agent: * disallow: /carrots user-agent: googlebot-news disallow: /shrimp
خزنده ها به طور داخلی قوانین را بر اساس عامل کاربر گروه بندی می کنند، به عنوان مثال:
user-agent: googlebot-news disallow: /fish disallow: /shrimp user-agent: * disallow: /carrots
قوانینی غیر از اجازه، غیر مجاز و عامل کاربر توسط تجزیه کننده robots.txt نادیده گرفته می شوند. این بدان معنی است که قطعه robots.txt زیر به عنوان یک گروه در نظر گرفته می شود، و بنابراین هر دو عامل کاربر a و b تحت تأثیر Disallow: / قانون قرار می گیرند:
user-agent: a sitemap: https://example.com/sitemap.xml user-agent: b disallow: /
هنگامی که خزنده ها قوانین robots.txt را پردازش می کنند، خط نقشه سایت را نادیده می گیرند. برای مثال، خزندهها قطعه قبلی robots.txt را به این ترتیب درک میکنند:
user-agent: a user-agent: b disallow: /
مطابقت URL بر اساس مقادیر مسیر
Google از مقدار مسیر در قوانین مجاز و غیر مجاز به عنوان مبنایی برای تعیین اینکه آیا یک قانون برای یک URL خاص در یک سایت اعمال می شود یا خیر استفاده می کند. این کار با مقایسه قاعده با مؤلفه مسیر URL که خزنده سعی در واکشی آن را دارد کار می کند. نویسههای ASCII غیر ۷ بیتی در یک مسیر ممکن است بهعنوان نویسههای UTF-8 یا نویسههای رمزگذاریشده UTF-8 درصد فرار در هر RFC 3986 گنجانده شوند.
گوگل، بینگ و سایر موتورهای جستجوی اصلی از شکل محدودی از حروف عام برای مقادیر مسیر پشتیبانی می کنند. این کاراکترهای wildcard عبارتند از:
*
0 یا بیشتر از هر کاراکتر معتبر را مشخص می کند.$
انتهای URL را مشخص می کند.
جدول زیر نشان می دهد که چگونه کاراکترهای مختلف حروف عام بر تجزیه تاثیر می گذارند:
مثال مسیر منطبق است | |
---|---|
/ |
با ریشه و هر URL سطح پایینتر مطابقت دارد. |
/* |
معادل /. علامت عام آخر نادیده گرفته می شود. |
/$ |
فقط با ریشه مطابقت دارد. هر URL سطح پایین تر برای خزیدن مجاز است. |
/ |
با هر مسیری که با /fish شروع می شود مطابقت دارد. توجه داشته باشید که تطبیق به حروف کوچک و بزرگ حساس است.
مطابقت دارد:
مطابقت ندارد:
|
/ |
معادل /fish. علامت عام آخر نادیده گرفته می شود.
مطابقت دارد:
مطابقت ندارد:
|
/fish/ | با هر چیزی در پوشه /fish/ مطابقت دارد.
مطابقت دارد:
مطابقت ندارد:
|
/*.php |
با هر مسیری که حاوی .php باشد مطابقت دارد.
مطابقت دارد:
مطابقت ندارد:
|
/*.php$ |
با هر مسیری که به آن ختم می شود مطابقت دارد .
مسابقات:
مطابقت ندارد:
|
/fish*.php |
هر مسیری که حاوی /fish و .php باشد را به ترتیب مطابقت می دهد.
مسابقات:
|
ترتیب تقدم برای قوانین
هنگام تطبیق قوانین robots.txt با URL ها، خزنده ها از خاص ترین قانون بر اساس طول مسیر قانون استفاده می کنند. در صورت وجود قوانین متناقض، از جمله مواردی که دارای حروف عام هستند، Google از حداقل قانون محدودکننده استفاده می کند.
مثالهای زیر نشان میدهند که خزندههای Google کدام قانون را روی یک URL خاص اعمال میکنند.
موقعیت های نمونه | |
---|---|
https://example.com/page |
allow: /p disallow: / قانون قابل اجرا: allow: /p، زیرا خاص تر است. |
https://example.com/folder/page |
allow: /folder disallow: /folder قانون قابل اجرا: allow: /folder، زیرا در صورت تضاد قوانین، گوگل از حداقل قانون محدودکننده استفاده می کند. |
https://example.com/page.htm |
allow: /page disallow: /*.htm قانون قابل اجرا: Disallow: /*.htm، زیرا مسیر قانون طولانیتر است و کاراکترهای بیشتری در URL مطابقت دارد، بنابراین مشخصتر است. |
https://example.com/page.php5 |
allow: /page disallow: /*.ph قانون قابل اجرا: allow: /page، زیرا در صورت تضاد قوانین، گوگل از حداقل قانون محدودکننده استفاده می کند. |
https://example.com/ |
allow: /$ disallow: /
قانون قابل اجرا: اجازه: /$، زیرا خاص تر است. |
https://example.com/page.htm |
allow: /$ disallow: / قانون قابل اجرا: Disallow: /، زیرا قانون اجازه فقط در URL ریشه اعمال می شود. |