الآلية التي يتّبعها محرّك البحث Google في تفسير مواصفات ملف robots.txt

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

ما المقصود بملف robots.txt؟

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

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

عليك وضع ملف robots.txt في دليل المستوى الأعلى على الموقع الإلكتروني، وباستخدام بروتوكول متوافق. والبروتوكولات المتوافقة مع خدمة "بحث Google" هي HTTP وHTTPS و"بروتوكول نقل الملفات". في البروتوكولَين HTTP وHTTPS، تجلب برامج الزحف ملف robots.txt باستخدام طلب GET غير مشروط لبروتوكول HTTP. وفي "بروتوكول نقل الملفات"، تستخدم برامج الزحف توجيه RETR (RETRIEVE) عاديًا من خلال تسجيل الدخول مع إخفاء الهوية.

لا يتم تطبيق القواعد المدرَجة في ملف 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.exämple.com/robots.txt صالح لما يلي:
  • http://www.exämple.com/
  • http://xn--exmple-cua.com/

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

ftp://example.com/robots.txt

صالح لما يلي: ftp://example.com/

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

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، يؤثر رمز حالة HTTP لاستجابة الخادم في آلية برامج زحف Google في استخدام برامج robots.txt.

التعامل مع الأخطاء ورموز حالة HTTP
2xx (نجاح العملية) تطلب رموز حالة HTTP التي تشير إلى نجاح العملية من برامج زحف Google معالجة ملف robots.txt كما تم توفيره من الخادم.
3xx (إعادة التوجيه)

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

لا يتّبع محرّك البحث Google عمليات إعادة التوجيه المنطقية في ملفات robots.txt (عمليات إعادة التوجيه المستنِدة إلى الإطارات أو JavaScript أو تعديل بيانات التعريف).

4xx (أخطاء البرنامج)

تتعامل برامج زحف Google مع جميع أخطاء 4xx كما لو أنها لم تعثر على ملف robots.txt صالح، ما يعني إمكانية الزحف بدون قيود.

5xx (خطأ في الخادم)

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

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

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

التخزين المؤقت

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

تنسيق الملف

يجب أن يكون ملف robots.txt ملفًّا نصيًّا عاديًّا بالترميز UTF-8، ويجب فصل الأسطر باستخدام CR أو CR/LF أو LF.

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

وبالمثل، إذا لم يكن ترميز الأحرف لملف 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 استخدام الحقول التالية:

  • user-agent: يحدّد الزاحف الذي تنطبق عليه القواعد
  • allow: مسار عنوان URL يمكن الزحف إليه
  • disallow: مسار عنوان URL لا يُسمح بالزحف إليه
  • sitemap: عنوان URL الكامل لملف Sitemap

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

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

user-agent

يحدّد سطر user-agent الزاحف التي تنطبق عليه القواعد. راجِع برامج الزحف من Google وسلاسل وكيل المستخدم للحصول على قائمة شاملة بسلاسل وكيل المستخدم التي يمكنك استخدامها في ملف robots.txt.

قيمة السطر user-agent غير حساسة لحالة الأحرف.

disallow

يحدّد التوجيه disallow المسارات التي يجب ألا تصل إليها برامج الزحف المحدّدة في سطر وكيل المستخدم الذي يتم جمعه مع التوجيه disallow. وتتجاهل برامج الزحف التوجيه الذي لا يتضمن مسارًا.

قيمة التوجيه disallow حسّاسة لحالة الأحرف.

الاستخدام:

disallow: [path]

allow

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

قيمة التوجيه allow حساسة لحالة الأحرف.

الاستخدام:

allow: [path]

sitemap

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

قيمة الحقل sitemap حساسة لحالة الأحرف.

الاستخدام:

sitemap: [absoluteURL]

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

مثلاً:

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 لكل زاحف.

مثلاً:

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

user-agent: googlebot-news
(group 1)

user-agent: *
(group 2)

user-agent: googlebot
(group 3)

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

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

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

يستخدم محرّك البحث Google قيمة المسار في التوجيهَين allow وdisallow كأساس لتحديد ما إذا كانت قاعدة ما تنطبق على عنوان URL معيّن في أحد المواقع الإلكترونية. ويعمل ذلك من خلال مقارنة القاعدة بمكوّن المسار لعنوان URL الذي يحاول الزاحف جلبه. ويمكن تضمين حروف ASCII التي ليست 7 بت في أحد المسارات كأحرف UTF-8 أو كأحرف إلغاء UTF-8 مرمّزة باستخدام علامة النسبة المئوية وفقًا للقواعد الواردة في RFC 3986.

يتيح محرّكا البحث Google وBing وغيرهما من محرّكات البحث الرئيسية استخدام شكل محدود من أحرف البدل لقيم المسار. وهي كما يلي:

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

يطابق أي مسار يبدأ بـ /fish.

يطابق:

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

لا يطابق:

  • /Fish.asp
  • /catfish
  • /?id=fish
  • /desert/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/
  • /animals/fish/
  • /fish/?id=anything
  • /fish/salmon.htm

لا يطابق:

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

يطابق أي مسار يحتوي على .php.

يطابق:

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

لا يطابق:

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

يطابق أي مسار ينتهي بـ .php.

يطابق:

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

لا يطابق:

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

يطابق أي مسار يحتوي على /fish و.php بهذا الترتيب.

يطابق:

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

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

ترتيب الأسبقية للقواعد

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

توضّح الأمثلة التالية القاعدة التي ستطبقها برامج زحف Google على عنوان URL معيّن.

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

allow: /p
disallow: /

القاعدة المطبَّقة: allow: /p لأنها أكثر تحديدًا.

http://example.com/folder/page

allow: /folder
disallow: /folder

القاعدة المطبَّقة: allow: /folder، لأنه في حال تطابُق القواعد، يستخدم محرّك البحث Google القاعدة الأقل تقييدًا.

http://example.com/page.htm

allow: /page
disallow: /*.htm

القاعدة المطبَّقة: disallow: /*.htm لأنها تطابق المزيد من الأحرف في عنوان URL، لذا فهي أكثر تحديدًا.

http://example.com/page.php5

allow: /page
disallow: /*.ph

القاعدة المطبَّقة: allow: /page، لأنه في حال تطابُق القواعد، يستخدم محرّك البحث Google القاعدة الأقل تقييدًا.

http://example.com/

allow: /$
disallow: /

القاعدة المطبَّقة: allow: /$ لأنها أكثر تحديدًا.

http://example.com/page.htm

allow: /$
disallow: /

القاعدة المطبَّقة: disallow: /، لأن القاعدة allow لا تنطبق إلا على عنوان URL الجذر.