مواصفات Robots.txt

الملخص

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

أوجه التغيير

في 1 تموز (يوليو) 2019، أعلنت Google أن بروتوكول robots.txt سيصبح بروتوكولًا معتمدًا على الإنترنت. وتظهر هذه التغييرات في هذا المستند.

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

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

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

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

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

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

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

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

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

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

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

نسق الملف

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

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

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

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

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

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

لا يمكن معالجة عناصر <field> التي تحتوي على أخطاء بسيطة أو أخطاء إملائية (مثل "وكيل متسخدم" بدلاً من "وكيل مستخدم").

يمكن فرض الحد الأقصى لحجم الملف لكل زاحف. يتم تجاهل المحتوى الذي يتخطّى الحد الأقصى لحجم الملف. يفرض Google حاليًا حدًا أقصى لحجم المحتوى يبلغ 500 كيبيبايت. لخفض حجم ملف robots.txt، ادمج الأوامر التي قد تؤدي إلى زيادة حجم ملف robots.txt. على سبيل المثال، ضع المواد المستبعدة في دليل منفصل.

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

إليك وصف "صيغة باكوس ناور المعززة" (ABNF) الموضَّحة في RFC5234.

robotstxt = *(group / emptyline)
group = startgroupline                    ; We start with a user-agent
        *(startgroupline / emptyline)     ; ... and possibly more user-agents
        *(rule / emptyline)               ; followed by rules relevant for UAs

startgroupline = *WS "user-agent" *WS ":" *WS product-token EOL

rule = *WS ("allow" / "disallow") *WS ":" *WS (path-pattern / empty-pattern) EOL

; parser implementors: add additional lines you need (for example, Sitemaps), and
; be lenient when reading lines that don’t conform. Apply Postel’s law.

product-token = identifier / "*"
path-pattern = "/" *(UTF8-char-noctl)    ; valid URI path pattern; see 3.2.2
empty-pattern = *WS

identifier = 1*(%x2d / %x41-5a / %x5f / %x61-7a)
comment = "#" *(UTF8-char-noctl / WS / "#")
emptyline = EOL
EOL = *WS [comment] NL         ; end-of-line may have optional trailing comment
NL = %x0D / %x0A / %x0D.0A
WS = %x20 / %x09

; UTF8 derived from RFC3629, but excluding control characters
UTF8-char-noctl = UTF8-1-noctl / UTF8-2 / UTF8-3 / UTF8-4
UTF8-1-noctl    = %x21 / %x22 / %x24-7F  ; excluding control, space, '#'
UTF8-2          = %xC2-DF UTF8-tail
UTF8-3          = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) /
                  %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail )
UTF8-4          = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) /
                  %xF4 %x80-8F 2( UTF8-tail )
UTF8-tail       = %x80-BF

تجميع الأسطر والقواعد

المجموعة هي سطر واحد أو أكثر من أسطر وكيل المستخدم متبوعة بقاعدة واحدة أو أكثر. يتم إنهاء المجموعة من خلال سطر وكيل المستخدم أو نهاية الملف. قد لا تتضمن المجموعة الأخيرة أي قواعد، ما يعني أنها تسمح ضمنيًا بكل الإجراءات.

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

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"

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

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

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

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

أمثلة

مثال 1

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

      user-agent: googlebot-news
      (group 1)

      user-agent: *
      (group 2)

      user-agent: googlebot
      (group 3)
    

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

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

مثال 2

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

      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
    

راجِع أيضًا برامج الزحف من 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 وغيرها من محركات البحث الرئيسية شكلًا محدودًا من "أحرف البدل" لقيم المسار. وهي كما يلي:

  • يحدّد * 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

يدعم Google وBing وغيرها من محركات البحث الرئيسية sitemap، على النحو المحدّد في sitemaps.org.

الاستخدام:

sitemap: [absoluteURL]

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

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

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

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

allow: /p

disallow: /

القرار: allow

http://example.com/folder/page

allow: /folder

disallow: /folder

القرار: allow

http://example.com/page.htm

allow: /page

disallow: /*.htm

القرار: undefined

http://example.com/

allow: /$

disallow: /

القرار: allow

http://example.com/page.htm

allow: /$

disallow: /

القرار: disallow

اختبار الترميز robots.txt

تقدّم Google خيارين لاختبار الترميز robots.txt:

  1. أداة اختبار الترميز robots.txt في Search Console
  2. مكتبة robots.txt مفتوحة المصدر من Google، التي تُستخدم أيضًا في "بحث Google".