Robots.txt Specifications

الملخص

يوضّح هذا المستند بالتفصيل كيفية معالجة Google لملف robots.txt الذي يسمح لك بالتحكم في كيفية زحف برامج زحف مواقع الويب من Google إلى مواقع الويب المتاحة للجميع وفهرستها.

لغة المتطلبات

يجب تفسير الكلمات الأساسية "MUST" و"MUST NOT" و"REQUIRED" و"SHALL" و"SHALL NOT" و"SHOULD" و"SHOULD NOT" و"RECOMMENDED" و"MAY" و"OPTIONAL" في هذا المستند على النحو الموضّح في RFC 2119.

التعريفات الأساسية

التعريفات
الزاحف الزاحف عبارة عن خدمة أو وكيل يزحف إلى مواقع الويب. بشكل عام، يصل أي زاحف تلقائيًا وبشكل متكرر إلى عناوين URL المعروفة لمضيف ما يكشف المحتوى الذي يمكن الوصول إليه باستخدام متصفحات الويب القياسية. وعندما يتم العثور على عناوين URL جديدة (من خلال وسائل متعددة، كالروابط على الصفحات الحالية والتي تم الزحف إليها أو ملفات Sitemap)، فإنه يتم الزحف إليها أيضًا بنفس الطريقة.
وكيل المستخدم وسيلة من وسائل تحديد زاحف خاص أو مجموعة من برامج الزحف.
الأوامر قائمة الإرشادات القابلة للتطبيق لأحد برامج الزحف أو مجموعة من برامج الزحف المبينة في ملف robots.txt.
عنوان URL محددات مواقع الويب على النحو المُشار إليه في RFC 1738.
خاص بمحرك البحث Google هذه العناصر خاصة بتطبيق ملف robots.txt في Google وقد تكون غير متعلقة بجهات خارجية.

قابلية التطبيق

يتم اتباع الإرشادات الموضحة في هذا المستند بواسطة جميع برامج الزحف التلقائية في Google. وعند وصول أحد الوكلاء إلى عناوين URL نيابة عن مستخدم ما (على سبيل المثال، للترجمة، والخلاصات التي تم الاشتراك فيها يدويًا، وتحليل البرامج الضارة، وما إلى ذلك)، لا تسري هذه الإرشادات.

موقع الملف ونطاق الصلاحية

يجب وضع ملف robots.txt في دليل المضيف عالي المستوى، وأن يكون قابلاً للوصول من خلال رقم المنفذ والبروتوكول المناسب. بشكل عام، البروتوكولات المقبولة لملف robots.txt (والزحف إلىمواقع الويب) هي "http" و"https". في http وhttps، يتم جلب ملف robots.txt باستخدام طلب GET غير مشروط لـ HTTP.

خاص بمحرك البحث Google: يقبل محرك البحث Google ملفات robots.txt لمواقع بروتوكول نقل الملفات (FTP) ويتبعها. ويتم الوصول إلى ملفات robots.txt المستندة إلى بروتوكول نقل الملفات عبر بروتوكول نقل الملفات، باستخدام تسجيل دخول مجهول.

لا يتم تطبيق الأوامر المدرجة في ملف robots.txt إلا على المضيف والبروتوكول ورقم المنفذ حيث استضافة الملف.

أمثلة عناوين URL الصالحة لملف robots.txt

أمثلة عناوين URL لملف robots.txt
http://example.com/robots.txt صالح لـ:
  • http://example.com/
  • http://example.com/folder/file
غير صالح لـ:
  • http://other.example.com/
  • https://example.com/
  • http://example.com:8181/
http://www.example.com/robots.txt

صالح لـ: http://www.example.com/

غير صالح لـ:

  • http://example.com/
  • http://shop.www.example.com/
  • http://www.shop.example.com/
http://example.com/folder/robots.txt ليس ملف robots.txt صالحًا. لن تتحقق برامج الزحف من ملفات robots.txt في الأدلة الفرعية.
http://www.müller.eu/robots.txt صالح لـ:
  • http://www.müller.eu/
  • http://www.xn--mller-kva.eu/

غير صالح لـ: http://www.muller.eu/

ftp://example.com/robots.txt

صالح لـ: ftp://example.com/

غير صالح لـ: http://example.com/

خاص بمحرك البحث Google: نستخدم ملف robots.txt لموارد بروتوكول نقل الملفات.

http://212.96.82.21/robots.txt

صالح لـ: http://212.96.82.21/

غير صالح لـ: http://example.com/ (حتى في حالة الاستضافة على 212.96.82.21)

http://example.com:80/robots.txt

صالح لـ:

  • http://example.com:80/
  • http://example.com/

غير صالح لـ: http://example.com:81/

http://example.com:8181/robots.txt

صالح لـ: http://example.com:8181/

غير صالح لـ: http://example.com/

معالجة رموز نتائج HTTP

توجد بشكل عام ثلاث نتائج مختلفة عند جلب robots.txt:

  • سماح كامل: يمكن الزحف إلى كل المحتوى.
  • منع كامل: لن يتم الزحف إلى أي محتوى.
  • سماح مشروط: تحدد الأوامر في ملف robots.txt إمكانية الزحف إلى محتوى معين.
معالجة رموز نتائج HTTP
2xx (ناجح) تؤدي رموز نتائج HTTP التي تشير إلى نجاح العملية إلى "سماح مشروط" بالزحف.
3xx (إعادة التوجيه) ستتم متابعة عمليات إعادة التوجيه بشكل عام إلى أن يتم العثور على نتيجة صالحة (أو يتم التعرف على حلقة ما). وسنتابع إجراء عدد محدود من قفزات إعادة التوجيه (RFC 1945 لـ HTTP/1.0 يسمح بما يصل إلى 5 قفزات) وبعد ذلك سيتم التوقف واعتبار العملية كخطأ 404. وتكون معالجة عمليات إعادة توجيه ملفات robots.txt لعناوين URL الممنوعة غير محدّدة وغير مُوصى بها. كما أن معالجة عمليات إعادة التوجيه المنطقية لملف robots.txt على أساس محتوى HTML الذي يعرض 2xx (الإطارات أو JavaScript أو عمليات إعادة التوجيه الوصفية لنوع التحديث) غير محدّدة وغير مُوصى بها.
4xx (أخطاء العميل) يعالج محرّك البحث Google جميع أخطاء 4xx بطريقة واحدة ويفترض عدم وجود ملف robots.txt صالح. كما يفترض عدم وجود أي قيود. ويُعد هذا "سماحًا كاملاً" بالزحف.
5xx (خطأ في الخادم)

يتم اعتبار أخطاء الخادم أخطاء مؤقتة تؤدي إلى "منع كامل" للزحف. تتم إعادة محاولة الطلب إلى أن يتم الحصول على رمز نتيجة HTTP لخطأ ليس من أخطاء الخادم. سيؤدي الخطأ 503 (الخدمة غير متوفرة) إلى إعادة المحاولة المتكررة إلى حد ما. لتعليق الزحف مؤقتًا، من المستحسن عرض رمز نتيجة HTTP لخطأ 503. وتُعد معالجة خطأ الخادم الدائم غير محدّدة.

خاص بمحرك البحث Google: إذا تمكّنا من الوقوف على تهيئة غير صحيحة لأحد المواقع لعرض خطأ 5xx بدلاً من خطأ 404 للصفحات المفقودة، سنعالج خطأ 5xx من ذلك الموقع باعتباره خطأ 404.

الطلبات غير الناجحة أو البيانات غير المكتملة تُعد معالجة ملف robots.txt الذي يتعذر جلبه بسبب حدوث مشاكل في نظام أسماء النطاقات أو في الشبكة مثل حالات انتهاء المهلة، الاستجابات غير الصالحة، إعادة تعيين / تعليق الاتصالات، أخطاء تجزئة معلومات HTTP، وما إلى ذلك غير محدّدة.
التخزين المؤقت يتم بشكل عام تخزين طلب robots.txt مؤقتًا لما يصل إلى يوم واحد، ولكن يمكن تخزينه مؤقتًا لمدة أطول من ذلك في الحالات التي يكون فيها تحديث النسخة المخبأة غير ممكن (على سبيل المثال، بسبب حالات انتهاء المهلة أو أخطاء 5xx). ويمكن مشاركة استجابة النسخة المخبأة بواسطة برامج الزحف المختلفة. ومن الممكن أن يزيد محرك البحث Google من مدة التخزين المؤقت أو يقللها على أساس رؤوس HTTP للتحكم في الحد الأقصى لعمر التخزين المؤقت.

تنسيق الملف

تنسيق الملف المتوقع هو نص عادي تم تشفيره بتنسيق UTF-8. ويتكون الملف من سجلات (سطور) مفصولة بواسطة CR أو CR/LF أو LF.

ستتم مراعاة السجلات الصالحة فقط؛ لذا سيتم تجاهل جميع المحتويات الأخرى. على سبيل المثال، إذا كان المستند الناتج عبارة عن صفحة HTML، فستتم مراعاة سطور النصوص الصالحة فقط، وسيتم تجاهل باقي السطور بدون عرض تحذير أو خطأ.

في حالة استخدام ترميز أحرف يؤدي إلى استخدام الأحرف التي ليست مجموعة فرعية من UTF-8، فقد يؤدي ذلك إلى تحليل المحتويات الملف بشكل غير صحيح.

يتم تجاهل علامة ترتيب وحدات بايت (BOM)‏ Unicode الاختيارية في بداية ملف robots.txt.

يتكون كل سجل من حقل وعلامة النقطتين وقيمة. وتعتبر المسافات اختيارية (ولكنها مستحسنة لتحسين قابلية القراءة). ويمكن تضمين التعليقات في أي موضع في الملف باستخدام حرف "#"؛ حيث تتم معالجة كل المحتوى الموجود بعد بداية أحد التعليقات حتى نهاية السجل باعتباره تعليقًا ويتم تجاهله. ويكون التنسيق العام عبارة عن <field>:<value><#optional-comment>. يتم تجاهل المسافة الفاصلة في بداية السجل ونهايته.

عنصر <field> غير حساس لحالة الأحرف. يمكن أن يكون عنصر <القيمة> حساسًا لحالة الأحرف، بالاعتماد على عنصر <الحقل>.

تُعد معالجة عناصر <field> التي تحتوي على أخطاء بسيطة / أخطاء في الكتابة (مثل "وكيل متسخدم" بدلاً من "وكيل مستخدم") غير محدّدة ويمكن تفسيرها كأوامر صحيحة بواسطة بعض وكلاء المستخدم.

يمكن فرض الحد الأقصى لحجم الملف لكل زاحف. ومن الممكن أن يتم تجاهل أي محتوى زيادة عن الحد الأقصى لحجم الملف. ويفرض محرّك البحث Google حاليًا حدًا للحجم يبلغ 500 كيلوبايت.

البنية الرسمية / التعريف

هذا وصف يشبه صيغة باكوس نور (BNF)، باستخدام اصطلاحات RFC 822{/0، باستثناء استخدام "|" لتعيين البدائل. يتم حصر القيم الحرفية ضمن علامتي الاقتباس ""، مع استخدام القوسين "(" و")" لتجميع العناصر، بينما يتم حصر العناصر الاختيارية في [الأقواس]، ومن الممكن أن تكون العناصر مسبوقة بـ <n>* لتعيين رقم أو مزيد من التكرارات للعنصر التالي؛ كما يتم تعيين الرقم تلقائيًا على 0.

robotstxt = *entries
entries = *( ( <1>*startgroupline
  *(groupmemberline | nongroupline | comment)
  | nongroupline
  | comment) )
startgroupline = [LWS] "user-agent" [LWS] ":" [LWS] agentvalue [comment] EOL
groupmemberline = [LWS] (
  pathmemberfield [LWS] ":" [LWS] pathvalue
  | othermemberfield [LWS] ":" [LWS] textvalue) [comment] EOL
nongroupline = [LWS] (
  urlnongroupfield [LWS] ":" [LWS] urlvalue
  | othernongroupfield [LWS] ":" [LWS] textvalue) [comment] EOL
comment = [LWS] "#" *anychar
agentvalue = textvalue

pathmemberfield = "disallow" | "allow"
othermemberfield = ()
urlnongroupfield = "sitemap"
othernongroupfield = ()

pathvalue = "/" path
urlvalue = absoluteURI
textvalue = *(valuechar | SP)
valuechar = <any UTF-8 character except ("#" CTL)>
anychar = <any UTF-8 character except CTL>
EOL = CR | LF | (CR LF)

يتم تحديد بنية "absoluteURI" و"CTL" و"CR" و"LF" و"LWS" في RFC 1945، بينما يتم تحديد بنية "المسار" في RFC 1808.

تجميع السجلات

يتم تصنيف السجلات إلى أنواع مختلفة على أساس نوع عنصر <field>:

  • بداية المجموعة
  • عضو في المجموعة
  • ليست لها مجموعة

يتم التعامل مع السجلات الأعضاء في المجموعة بعد سجل بداية المجموعة وحتى سجل بداية المجموعة التالي باعتبارها مجموعة من السجلات. ويُعد عنصر حقل بداية المجموعة الوحيد هو user-agent. وستتبع سطور بداية المجموعة المتعددة مباشرة بعد بعضها البعض السجلات الأعضاء في المجموعة عقب سطر بداية المجموعة النهائي. وسيتم تجاهل أي سجلات أعضاء في المجموعة بدون سجل سابق لبداية المجموعة. وتُعد جميع السجلات التي ليست لها مجموعة صالحة بشكل مستقل عن جميع المجموعات.

في ما يلي عناصر <field> الصالحة، التي سيتم توضيحها بمزيد من التفصيل في هذا المستند:

  • user-agent (بداية المجموعة)
  • disallow (صالح كسجل عضو في مجموعة فقط)
  • allow (صالح كسجل عضو في مجموعة فقط)
  • sitemap (سجل ليس له أية مجموعة)

من الممكن أن يتم تجاهل جميع عناصر <field> الأخرى.

يتم استخدام عنصر بداية المجموعة user-agent لتحديد أي من المجموعات صالحة للزاحف. وهناك مجموعة واحدة من السجلات فقط صالحة لزاحف محدد. وسنتناول ترتيب الأسبقية لاحقًا في هذا المستند.

أمثلة للمجموعات:

user-agent: a
disallow: /c

user-agent: b
disallow: /d

user-agent: e
user-agent: f
disallow: /g

توجد ثلاث مجموع مميزة محددة، مجموعة لـ "a" ومجموعة لـ "b" وأيضًا مجموعة لكل من "e" و"f". وتحتوي كل مجموعة على سجل عضو في المجموعة خاص بها. ويرجى ملاحظة الاستخدام الاختياري للمسافة الفارغة (سطر فارغ) لتحسين قابلية القراءة.

ترتيب الأسبقية لوكلاء المستخدم

وهناك مجموعة واحدة من سجلات الأعضاء في المجموعة صالحة لزاحف محدد. ويتعين أن يحدد الزاحف مجموعة السجلات الصحيحة عن طريق البحث عن المجموعة التي تتضمن وكيل المستخدم الأكثر تحديدًا والتي ما زالت مطابقة. ويتم تجاهل جميع مجموعات السجلات الأخرى بواسطة الزاحف. وكيل المستخدم غير حساس لحالة الأحرف. يتم تجاهل جميع النصوص غير المطابقة (على سبيل المثال، كل من googlebot/1.2 وgooglebot* يعادل googlebot). ويُعتبر ترتيب المجموعات داخل ملف robots.txt غير ذي صلة.

مثال

نفترض أن ملف robots.txt بهذا الشكل:

user-agent: googlebot-news
(group 1)

user-agent: *
(group 2)

user-agent: googlebot
(group 3)

نذكر في ما يلي كيفية اختيار برامج الزحف للمجموعة ذات الصلة:

مجموعة السجلات المتّبعة لكل زاحف
Googlebot News مجموعة السجلات المتّبعة هي المجموعة 1. يتم تتبع المجموعة الأكثر تحديدًا فقط، ويتم تجاهل جميع المجموعات الأخرى.
Googlebot (ويب) مجموعة السجلات المتّبعة هي المجموعة 3.
Googlebot Images مجموعة السجلات المتّبعة هي المجموعة 3. لا توجد مجموعة googlebot-images محدّدة، لذا يتم تتبع مجموعة أكثر عمومية.
Googlebot News (عند الزحف إلى الصور) مجموعة السجلات المتّبعة هي المجموعة 1. يتم الزحف إلى هذه الصور بواسطة Googlebot News، ولذا يتم تتبع مجموعة Googlebot News فقط.
Otherbot (ويب) مجموعة السجلات المتّبعة هي المجموعة 2.
Otherbot (الأخبار) مجموعة السجلات المتّبعة هي المجموعة 2. حتى عند وجود إدخال للزاحف المرتبط، سيكون صالحًا فقط إذا كان مطابقًا على وجه الخصوص.

راجِع أيضًا برامج الزحف من Google وسلاسل وكيل المستخدم.

السجلات الأعضاء في المجموعة

يتم تناول أنواع السجلات الأعضاء في المجموعة العامة والخاصة بمحرك البحث Google في هذا القسم فقط. وتسمى أنواع السجلات هذه أيضًا "أوامر" لبرامج الزحف. ويتم تحديد هذه الأوامر في شكل "directive: [path]" حيث يكون [path] اختياريًا. وبشكل تلقائي، لا توجد قيود على الزحف باستخدام برامج الزحف المحددة. كما يتم تجاهل الأوامر التي بدون [path].

يجب أن تكون قيمة [path] - في حالة تحديدها - وثيقة الصلة بجذر موقع الويب الذي تم جلب ملف robots.txt من أجله (باستخدام البروتوكول ورقم المنفذ والمضيف وأسماء النطاقات نفسها). ويجب أن تبدأ قيمة المسار بـ "/" لتعيين الجذر. ويُعد المسار حساسًا لحالة الأحرف. ويمكن العثور على المزيد من المعلومات في القسم "مطابقة عنوان URL على أساس قيم المسارات" أدناه.

المنع

يحدد الأمر disallow المسارات التي ينبغي عدم الوصول إليها بواسطة برامج الزحف المحددة. عند عدم تحديد أي مسار، يتم تجاهل الأمر.

الاستخدام:

disallow: [path]

سماح

يحدد الأمر allow المسارات التي يمكن الوصول إليها بواسطة برامج الزحف المحددة. عند عدم تحديد أي مسار، يتم تجاهل الأمر.

الاستخدام:

allow: [path]

مطابقة عنوان URL على أساس قيم المسارات

يتم استخدام قيمة المسار كأساس لتحديد ما إذا كان سيتم تطبيق قاعدة ما أم لا على عنوان URL خاص على أحد المواقع. باستثناء حروف البدل، يتم استخدام المسار لمطابقة بداية عنوان URL (وأي عناوين URL صالحة تبدأ بالمسار نفسه). ويمكن تضمين حروف ASCII التي ليست 7 بت في أحد المسارات كأحرف UTF-8 أو كأحرف مشفرة UTF-8 تم الخروج منها باستخدام علامة النسبة المئوية وفقًا لـ RFC 3986.

تتوافق محركات البحث Google وBing وYahoo وAsk مع صيغة محدودة من "حروف البدل" لقيم المسارات. وهي:

  • يعيِّن * 0 أو أكثر من أمثلة أي حروف صالحة.
  • يعيِّن $ نهاية عنوان URL.
مثال على مطابقات المسارات
/ يطابق الجذر وأي عنوان URL بمستوى أدنى.
/* يعادل /. ويتم تجاهل حرف البدل اللاحق.
/fish

يطابق:

  • /fish
  • /fish.html
  • /fish/salmon.html
  • /fishheads
  • /fishheads/yummy.html
  • /fish.php?id=anything

لا يطابق:

  • /Fish.asp
  • /catfish
  • /?id=fish
/fish*

يعادل /fish. ويتم تجاهل حرف البدل اللاحق.

يطابق:

  • /fish
  • /fish.html
  • /fish/salmon.html
  • /fishheads
  • /fishheads/yummy.html
  • /fish.php?id=anything

لا يطابق:

  • /Fish.asp
  • /catfish
  • /?id=fish
/fish/

تعني الشرطة المائلة اللاحقة أن هذا المسار يطابق جميع محتوى هذا المجلد.

يطابق:

  • /fish/
  • /fish/?id=anything
  • /fish/salmon.htm

لا يطابق:

  • /fish
  • /fish.html
  • /Fish/Salmon.asp
/*.php

يطابق:

  • /filename.php
  • /folder/filename.php
  • /folder/filename.php?parameters
  • /folder/any.php.file.html
  • /filename.php/

لا يطابق:

  • / (حتى لو كان مرتبطًا بـ /index.php)
  • /windows.PHP
/*.php$

يطابق:

  • /filename.php
  • /folder/filename.php

لا يطابق:

  • /filename.php?parameters
  • /filename.php/
  • /filename.php5
  • /windows.PHP
/fish*.php

يطابق:

  • /fish.php
  • /fishheads/catfish.php?parameters

لا يطابق: /Fish.PHP

سجلات غير الأعضاء في المجموعة المتوافقة مع محرك البحث Google

ملف sitemap

متوافق مع محركات البحث Google، Ask، Bing، Yahoo؛ تم تحديده في sitemaps.org.

الاستخدام:

sitemap: [absoluteURL]

[absoluteURL] يشير إلى ملف Sitemap أو ملف فهرس Sitemap أو عنوان URL معادل. ولا يشترط أن يكون عنوان URL على مضيف ملف robots.txt نفسه. من الممكن وجود إدخالات sitemap متعددة. ونظرًا لكونها سجلات غير أعضاء في المجموعة، فإنها غير مرتبطة بأي وكلاء مستخدم محددين ويمكن تتبعها بواسطة جميع برامج الزحف، شريطة ألا يتم منع الزحف إليها.

ترتيب الأسبقية للسجلات الأعضاء في المجموعة

على مستوى أعضاء المجموعة، وبالأخصّ للأمرين allow وdisallow، القاعدة الأكثر تحديدًا على أساس طول إدخال [path] سوف تسبق القاعدة الأقل تحديدًا (الأقصر). ويُعد ترتيب أسبقية القواعد باستخدام حروف البدل غير محدد.

أمثلة على الحالات
http://example.com/page

سماح: /p

منع: /

Verdict: سماح

http://example.com/folder/page

سماح: /folder

منع: /folder

Verdict: سماح

http://example.com/page.htm

سماح: /page

منع: /*.htm

Verdict: غير محدّد

http://example.com/

سماح: /$

منع: /

Verdict: سماح

http://example.com/page.htm

سماح: /$

منع: /

Verdict: منع

إرسال تعليقات حول...