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 الأخرى - حساسًا لحالة الأحرف.

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

عنوان URL لملف robots.txtصالح لـ غير صالح لـتعليقات
http://example.com/robots.txt http://example.com/
http://example.com/folder/file
http://other.example.c
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.co
ملف robots.txt على أحد النطاقات الفرعية صالح فقط لذلك النطاق الفرعي.
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/ تعادل أسماء النطاقات المدولة (IDN) نُسخ punycode التابعة لها. راجع أيضًا RFC 3492.
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) سيكون ملف robots.txt بعنوان IP كاسم مضيف صالحًا فقط للزحف إلى عنوان IP هذا كاسم مضيف. ولن يكون هذا الملف صالحًا تلقائيًا لجميع مواقع الويب المستضافة على عنوان IP هذا (على الرغم من أنه من الممكن مشاركة ملف robots.txt، إلا أنه سيكون متوفرًا أيضًا ضمن اسم المضيف المشترك في هذه الحالة).
http://example.com:80/robots.txt http://example.com:80/
http://example.com/
http://example.com:81/ أسماء المنافذ القياسية (80 لـ http،‏ 443 لـ https،‏ 21 لـ ftp) معادلة لأسماء المضيف الافتراضية التابعة لها. راجع أيضًا [أرقام المنافذ].
http://example.com:8181/robots.txt http://example.com:8181/ http://example.com/ ملفات robots.txt على أرقام المنافذ غير القياسية صالحة فقط للمحتوى المتوفر من خلال أرقام المنافذ هذه.

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

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

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

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

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

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

يمكن فرض الحد الأقصى لحجم الملف لكل زاحف. ومن الممكن أن يتم تجاهل أي محتوى زيادة عن الحد الأقصى لحجم الملف. ويفرض محرّك البحث 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.

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

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

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

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

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

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

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

يتم استخدام عنصر بداية المجموعة 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 في هذا القسم فقط. وتسمى أنواع السجلات هذه أيضًا "أوامر" لبرامج الزحف. ويتم تحديد هذه الأوامر في شكل "الأمر: [مسار]" حيث يكون [المسار] اختياريًا. وبشكل افتراضي، لا توجد قيود على الزحف باستخدام برامج الزحف المحددة. كما يتم تجاهل الأوامر التي بدون [مسار].

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

المنع

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

الاستخدام:

disallow: [path]

سماح

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

الاستخدام:

allow: [path]

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

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

ملاحظة: يجب تحديد عناوين URL "للزحف باستخدام AJAX" في النُسخ التي تم الزحف إليها.

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

  1. يعيِّن * 0 أو أكثر من أمثلة أي حروف صالحة
  2. يعيِّن $ نهاية عنوان URL

مثال على مطابقات المسارات

[المسار]يطابق لا يطابقتعليقات
/أي عنوان URL  يطابق الجذر وأي عنوان URL بمستوى أدنى
/*يعادل / يعادل / يعادل "/" -- يتم تجاهل حرف البدل اللاحق.
/fish/fish
/fish.html
/fish/salmon.html
/fishheads
/fishheads/yummy.html
/fish.php?id=anything
/Fish.aspf
/catfish
/?id=fish
يرجى ملاحظة المطابقة الحساسة لحالة الأحرف.
/fish*/fish
/fish.html
/fish/salmon.html
/fishheads
/fishheads/yummy.html
/fish.php?id=anything
/Fish.aspf
/catfish
/?id=fish
يعادل "/fish" -- يتم تجاهل حرف البدل اللاحق.
/fish//fish/
/fish/?id=anything
/fish/salmon.htm
/fish
/fish.html
/Fish/Salmon.as
تعني الشرطة المائلة اللاحقة أن هذا المسار يطابق أي شيء في هذا المجلد.
/*.php/filename.php
/folder/filename.php
/folder/filenameparameters
/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.ph
/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، القاعدة الأكثر تحديدًا على أساس طول إدخال [المسار] سوف تسبق القاعدة الأقل تحديدًا (الأقصر). ويُعد ترتيب أسبقية القواعد باستخدام حروف البدل غير محدد.

أمثلة على الحالات:

عنوان URLسماح:منع:قرار تصفية تعليقات
http://example.com/page /p /سماح 
http://example.com/folder/page /folder/ /folderسماح 
http://example.com/page.htm /page /*.htmغير محدد 
http://example.com/ /$ /سماح 
http://example.com/page.htm /$ /منع 

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