في مقال «السيو التقني» عرّفتُ ملف robots.txt بوصفه أوّل بابٍ يخاطب به موقعك الزواحف، ووعدتُ بتفصيله. هذا موعده. ملفٌّ نصّيٌّ صغير، سطرٌ خاطئ فيه قد يحجب موقعك كلّه عن جوجل، وسطرٌ صحيح يوفّر على المحرّك جهدًا ويوجّهه إلى ما يهمّك. سأشرح ما هو، وأين يوضع، وكيف يُكتب، وأخطر ما يُخطأ فيه، ثمّ كيف تتحكّم به بزواحف الذكاء الاصطناعيّ، وكيف تختبره بالطريقة الحديثة.
ما ملف robots.txt، وأين يوجد
ملف robots.txt ملفٌّ نصّيٌّ بسيط توضع فيه توجيهاتٌ للزواحف: أيّ أجزاء موقعك يُسمح لها بزحفها وأيّها لا. وهو تطبيقٌ لمعيارٍ قديمٍ اسمه «بروتوكول استبعاد الروبوتات» (Robots Exclusion Protocol)، صار معيارًا رسميًّا سنة 2022. ويعود أصله إلى سنة 1994، حين اتّفق مطوّرو الويب على طريقةٍ مهذّبة يقولون بها للزواحف أين لا تذهب، وبقي عُرفًا متّبعًا حتى وثّقته جوجل ومعها آخرون في معيار RFC 9309 سنة 2022. ومهمّ أن تعرف أنّه اتفاقٌ طوعيّ لا سورٌ منيع: الزواحف المهذّبة (كزاحف جوجل) تحترمه، أمّا الزواحف الخبيثة فتتجاهله. لهذا لا يصلح أبدًا لإخفاء بياناتٍ حسّاسة، فالملف نفسه علنيٌّ يقرؤه أيّ أحد.
وموضعه محدّد: يجب أن يكون في جذر الموقع، على العنوان yourdomain.com/robots.txt تمامًا. وهو خاصٌّ بمضيفه وبروتوكوله ومنفذه: فملفُّ https://example.com لا يحكم النطاق الفرعيّ blog.example.com، ولا نسخة http، بل لكلٍّ ملفُّه. ومسارات التوجيهات فيه حسّاسةٌ لحالة الأحرف، فـ/Page غير /page.
جرّبه بنفسك
افتح الآن google.com/robots.txt ثمّ wikipedia.org/robots.txt. سترى ملفّاتٍ حقيقيةً لأكبر المواقع: مجموعات توجيهاتٍ لزواحف مختلفة، وأسطرَ منعٍ وسماح، وروابط خرائط المواقع. هذا الملف الذي تقرؤه الآن هو نفسه ما يقرؤه الزاحف كلّ يوم.
الزحف لا الفهرسة: الخلط الأخطر
أعيد هنا ما رسّختُه في مقال السيو التقني، لأنّه لبّ الموضوع: robots.txt يتحكّم في الزحف، لا في الفهرسة. المنع بتوجيه Disallow يقول للزاحف «لا تدخل»، لا «لا تفهرس». والنتيجة المفاجئة: إن أشارت روابطُ مواقع أخرى إلى صفحةٍ ممنوعةٍ عندك، فقد يفهرسها جوجل دون أن يزحفها، فتظهر في النتائج عنوانًا بلا وصف، مع عبارة «لا توجد معلوماتٌ متاحة لهذه الصفحة».[1]
ولماذا يحدث هذا؟ لأنّ جوجل عرف بوجود الصفحة من الروابط التي تشير إليها من مواقع أخرى، فأدرج عنوانها في الفهرس دون أن يقرأ محتواها، إذ منعتَه من الدخول لا من المعرفة. فإن رأيتَ في تقرير الفهرسة حالة «مفهرسة رغم الحجب بملف robots.txt»، فاعلم أنّك استعملتَ الأداة الخطأ: أزِل المنع من الملف، ودع الزاحف يدخل ليرى توجيه noindex، وعندها فقط تخرج الصفحة من النتائج.
الأمر أشبه ببوّابة حديقةٍ مغلقة: منعتَ الزائر من الدخول، لكنّك لم تمنع المارّة من معرفة أنّ الحديقة موجودة والإشارة إليها. فإن أردتَ فعلًا ألّا تُفهرَس صفحة، فالأداة الصحيحة توجيه noindex (في وسم الصفحة أو ترويسة الاستجابة)، وشرطُ نجاحه أن تدع الزاحف يدخل الصفحة ليرى التوجيه. فلا تجمع بين منعها في robots.txt ووضع noindex فيها، وإلا لم يدخلها الزاحف ولم يرَ توجيهك.[1]
ثلاث أدواتٍ لا تخلط بينها
يخلط كثيرون بين ثلاث أدواتٍ تبدو متشابهةً وتفعل أشياء مختلفةً تمامًا. توجيه Disallow في robots.txt يمنع الزحف (دخول الصفحة). ووسم noindex يمنع الفهرسة (ظهور الصفحة في النتائج)، ويتطلّب السماح بالزحف ليُرى. وصفة nofollow على رابطٍ تقول للمحرّك لا تتبع هذا الرابط بعينه ولا تمرّر إليه ثقتك. فالأولى عن دخول الصفحة، والثانية عن ظهورها، والثالثة عن علاقة رابطٍ بصفحةٍ أخرى. اختر الأداة بحسب ما تريد فعله بالضبط، ولا تضع واحدةً مكان أخرى.
وتوجيه noindex نفسه يصلك بطريقتين: وسمٌ داخل ترويسة صفحة HTML على هيئة <meta name=”robots” content=”noindex”>، أو ترويسة استجابة HTTP اسمها X-Robots-Tag تحمل التوجيه نفسه. والفرق عمليّ: الوسم لا يعمل إلّا في صفحات HTML، أمّا ترويسة X-Robots-Tag فتضبط ملفّاتٍ لا وسم فيها أصلًا، كملفّ PDF أو صورة، إذ تصدر مع استجابة الخادم لا داخل محتوى الملف. ومثالها سطرٌ واحد في الاستجابة: X-Robots-Tag: noindex، يكفي أن يصاحب ملفّ الـPDF حتى يسقط من الفهرس دون لمس محتواه. وأيّ قاعدةٍ تكتبها في وسم الروبوتات يمكنك كتابتها في هذه الترويسة نفسها. وكلتاهما تشترط شرطًا واحدًا لا يتغيّر: أن تدع الزاحف يدخل الملف ليقرأ التوجيه؛ فإن حجبتَه في robots.txt لم يره أصلًا، وعادت بك القصّة إلى الخلط ذاته بين الزحف والفهرسة.[7]
بناء الجملة
يتكوّن الملف من مجموعات قواعد، كلّ مجموعةٍ تبدأ بسطر User-agent يحدّد الزاحف المخاطَب، تليه توجيهات المنع والسماح. والنجمة * في User-agent تعني «كلّ الزواحف». مثالٌ بسيط:
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://example.com/sitemap.xml
هنا منعتَ كلّ الزواحف من مجلّد الإدارة، لكنّك استثنيتَ منه ملفًّا واحدًا يحتاجه الموقع. وحين يتعارض توجيه سماحٍ وتوجيه منعٍ على المسار نفسه، يطبّق جوجل الأطول تطابقًا في المسار، فإن تساويا غلّب الأقلّ تقييدًا (أي السماح).[2] أمّا توجيه Sitemap فمستقلٌّ عن المجموعات، يشير إلى خريطة موقعك بعنوانٍ كامل، وهو جسرك إلى المقال التالي. والسطر الذي يبدأ بـ# تعليقٌ للتوثيق يتجاهله الزاحف.
ونقطةٌ يخطئ فيها كثيرون: حين توجد عدّة مجموعات، لا يجمع جوجل بينها، بل يتبع المجموعة الأدقّ مطابقةً لاسم زاحفه وحدها. فإن كتبتَ مجموعةً لـGooglebot وأخرى لكلّ الزواحف (*)، اتّبع Googlebot مجموعته وتجاهل مجموعة النجمة تمامًا. فاحرص أن تكون توجيهاتك المهمّة في المجموعة التي تخاطب الزاحف المقصود فعلًا. (وأسماء الزواحف في User-agent غير حسّاسةٍ لحالة الأحرف، بخلاف المسارات في Disallow التي تتأثّر بها.)
المحارف البديلة: * و $
يدعم جوجل محرفين بديلين يوسّعان قوّة توجيهاتك. النجمة * تطابق أيّ تتابعٍ من الأحرف، وعلامة الدولار $ تثبّت نهاية الرابط. أمثلة:
Disallow: /*? # كل رابط فيه معامل استعلام (?)
Disallow: /*.pdf$ # كل رابط ينتهي بـ .pdf
Disallow: /search/ # صفحات البحث الداخلي
الأوّل يمنع زحف الروابط ذات معاملات الاستعلام (مفيدٌ للمتاجر التي تولّد آلاف روابط التصفية، كما مرّ في فخاخ الزحف). والثاني يمنع ملفّات PDF تحديدًا بفضل تثبيت النهاية بـ$. ولاحظ أنّ النجمة في آخر المسار زائدةٌ لا تضيف شيئًا، فـ/search/* و/search/ سواء، لأنّ التطابق يقع على البادئة أصلًا.[2]
الحدود والسلوك التقنيّ
لملف robots.txt حدودٌ وسلوكٌ يجدر أن تعرفها حتى لا تتفاجأ:
- الحجم: يقرأ جوجل حتى 500 كيبيبايت من الملف، ويتجاهل ما بعدها. ملفُّك عمليًّا لن يقترب من هذا الحدّ.
- التخزين المؤقّت: يخزّن جوجل الملف نحو أربعٍ وعشرين ساعة، فتغييرك لا يظهر أثره فورًا (ويمكن تسريعه من تقرير Search Console).
- عند غياب الملف: إن أرجع الخادم خطأ 404 (غير موجود)، عدّه جوجل إذنًا بزحف كلّ شيء.
- عند عطب الخادم: إن أرجع خطأ 5xx، توقّف جوجل عن زحف الموقع في أوّل اثنتي عشرة ساعة (مع مواصلة محاولة جلب الملف)، ثمّ اعتمد على آخر نسخةٍ سليمة مخزّنة نحو ثلاثين يومًا، فالعطب الطويل قد يعطّل زحف موقعك.
- crawl-delay: توجيه «تأخير الزحف» (crawl-delay) لا يدعمه جوجل ويتجاهله، وإن كانت محرّكاتٌ أخرى تحترمه.
كلّ هذا موثّقٌ في مواصفات جوجل لتفسير الملف.[2]
أخطاءٌ فادحة
أوّلها زرّ التدمير الذاتيّ: سطرٌ واحد هو Disallow: / يمنع زحف الموقع كلّه. يقع كثيرون فيه حين ينقلون موقعًا من بيئة التطوير إلى الإنتاج ناسين أنّ ملف التطوير كان يحجب كلّ شيء عمدًا. راجعه أوّل ما تطلق موقعك.
وثانيها حجب ملفّات CSS وجافاسكربت: خطأٌ يظنّه بعضهم تنظيفًا، وهو جنايةٌ على موقعك. يحتاج جوجل أن يصيّر صفحتك كما يراها المتصفّح ليفهمها، خصوصًا تحت الفهرسة المعتمدة على الجوال. فإن حجبتَ عنه ملفّات التصميم والبرمجة، رآها ناقصةً مشوّهة. الأمر أشبه بناقد طعامٍ تطلب حكمه على طبقٍ وأنت تعصب عينيه. دع هذه الملفّات مفتوحةً للزحف دائمًا.
وثالثها ظنّ الملف أداة إخفاءٍ أو أمان: مرّ أنّه علنيٌّ ولا يمنع الفهرسة. من أراد إخفاء صفحةٍ فليحمها بكلمة مرور، ومن أراد منع ظهورها فليستعمل noindex، لا أن يعلن للعالم في ملفٍّ عامّ أين مجلّداته الحسّاسة.
ورابعها المنع الواسع بالخطأ: نمطٌ فيه نجمةٌ في غير موضعها قد يحجب صفحاتٍ لم تقصد حجبها. النجمة قويّة، وفي قوّتها خطرها؛ اختبر كلّ نمطٍ واسعٍ على عناوينك الحقيقية قبل أن تنشره.
ماذا تمنع فعلًا، وماذا تدع؟
بعد أن عرفتَ ما لا يُمنَع، يبقى السؤال العمليّ: ماذا أمنع؟ والجواب المفاجئ لأكثر المواقع الصغيرة: قليلًا جدًّا، وربّما لا شيء. دع جوجل يزحف موقعك؛ فالمنع استثناءٌ لغرضٍ لا قاعدةٌ عامّة. المرشّحون المعقولون للمنع صفحاتٌ لا قيمة لها في البحث ولا تريد إهدار الزحف عليها: لوحة الإدارة، وصفحات نتائج البحث الداخليّ، وصفحات السلّة والدفع وتأكيد الطلب، وروابط التصفية اللانهائية في المتاجر. أمّا مقالاتك وصفحاتك وصورك وملفّات تصميمك، فدعها كلّها مفتوحة.
وإليك ملفًّا نموذجيًّا يكفي موقع ووردبريس بسيطًا:
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?s=
Sitemap: https://example.com/sitemap.xml
السطر الأوّل يخاطب كلّ الزواحف، والثاني يمنع لوحة الإدارة، والثالث يستثني ملفًّا تحتاجه الواجهة، والرابع يمنع صفحات البحث الداخليّ (المسبوقة بـ?s= في ووردبريس)، والأخير يدلّ على خريطة الموقع. هذا يكفي أكثر المواقع، والزيادة عليه غالبًا ضررٌ لا نفع. القاعدة الذهبية: لا تمنع شيئًا حتى تعرف بالضبط لماذا تمنعه. وللمنع فائدةٌ إضافية للمواقع الضخمة: حجب الروابط عديمة القيمة يوفّر ميزانية الزحف لصفحاتك المهمّة (وقد فصّلتها في مقال السيو التقني)، أمّا الموقع الصغير فلا يحتاج هذا القلق أصلًا.
سيناريوهات شائعة
لتقريب الأمر، إليك ما يفعله الملف في حالاتٍ متكرّرة:
- موقعٌ جديد: اترك الزحف مفتوحًا، واكتفِ بمنع لوحة الإدارة، وأضِف سطر خريطة الموقع. لا تمنع أكثر من ذلك وأنت تبدأ.
- موقعٌ نُقل حديثًا: أوّل ما تفحصه ألّا يكون فيه Disallow: / منقولٌ من بيئة التطوير، فهذا أشيع سببٍ لاختفاء موقعٍ بعد نقله.
- متجرٌ إلكترونيّ: امنع روابط التصفية والفرز (معاملات الاستعلام) وصفحات السلّة والدفع، ودع صفحات المنتجات والفئات مفتوحةً للزحف.
- موقع تطوير أو تجربة (staging): احجبه كلّه على نطاقه الفرعيّ المنفصل حتى لا يُفهرَس، واحذر أن ينتقل ملفّه إلى موقع الإنتاج.
التحكّم في زواحف الذكاء الاصطناعيّ
جدّ في السنوات الأخيرة استعمالٌ لم يكن في حسبان واضعي المعيار: التحكّم بزواحف الذكاء الاصطناعيّ التي تجمع المحتوى لتدريب النماذج أو لتغذية إجاباتها. ولكلٍّ منها اسمُ زاحفٍ تمنعه أو تسمح له في ملفك تمامًا كأيّ زاحف:
- Google-Extended: يتحكّم في استعمال جوجل محتواك لتدريب نماذج Gemini. والمهمّ: منعُه لا يؤثّر في ظهورك في بحث جوجل ولا في ترتيبك، فهو منفصلٌ عن زاحف البحث.[4]
- GPTBot وأخواته من OpenAI: GPTBot لتدريب النماذج، وOAI-SearchBot للظهور في بحث ChatGPT، ولكلٍّ توجيهٌ مستقلّ.[5]
- CCBot: زاحف Common Crawl الذي تعتمد عليه نماذج كثيرة، ويحترم توجيهات الملف.[6]
- زواحف أخرى: مثل ClaudeBot (من Anthropic) وPerplexityBot، ولكلٍّ اسمٌ تمنعه به. والأسماء تتغيّر وتُضاف باستمرار، فراجعها بين الحين والحين.
مثالٌ يمنع أبرز زواحف الذكاء الاصطناعيّ دفعةً واحدة ويُبقي بحث جوجل كما هو (عدّة أسطر User-agent قبل توجيهٍ واحدٍ تكوّن مجموعةً تسري عليها جميعًا):
User-agent: GPTBot
User-agent: Google-Extended
User-agent: CCBot
User-agent: ClaudeBot
User-agent: PerplexityBot
Disallow: /
والقرار قرارك: بعضهم يمنع تدريب النماذج على محتواه، وبعضهم يرحّب به سعيًا للظهور في إجابات الذكاء الاصطناعيّ. وميّز دائمًا بين ما يخصّ التدريب وما يخصّ بحث جوجل، فلا تمنع بحثك ظنًّا أنّك تمنع التدريب. وقد بنيتُ في أداتي Crawlix فحصًا يكشف أيّ زواحف الذكاء الاصطناعيّ يسمح لها موقعك أو يمنعها، ويولّد ملفًّا مضبوطًا، لأنّ متابعة هذه الأسماء المتغيّرة يدويًّا مرهقة.
كيف تختبره بالطريقة الحديثة
كانت في Search Console أداةٌ لاختبار robots.txt أزالتها جوجل أواخر 2023، فما زال كثيرٌ من الشروح العربية يحيل إلى أداةٍ لم تعد موجودة.[3] الطريقة الحديثة ثلاثة مسارات: تقرير robots.txt في Search Console (يريك آخر نسخةٍ جلبها جوجل وأيّ أخطاءٍ في قراءتها)، وأداة فحص العنوان التي تخبرك «هل الزحف مسموح؟» لصفحةٍ بعينها، والمدقّقات الخارجية مثل TechnicalSEO.com. ولمن أراد الدقّة، نشرت جوجل محلّل robots.txt مفتوح المصدر الذي تستعمله هي نفسها، فيمكن اختبار التطابق به تمامًا كما يفعل المحرّك. ومهما كانت أداتك، لا تعدّل ملفّك على موقعٍ حيّ ثمّ تنساه؛ اختبر أثر التوجيه على عناوينك المهمّة قبل أن تطمئنّ.
كيف تنشئه وتعدّله
على ووردبريس، تدير إضافاتُ السيو (مثل Rank Math وYoast) محتوى الملف من لوحة التحكّم دون لمس الخادم. وإن أردتَ يدويًّا، فالأمر أبسط ممّا تظنّ: افتح محرّر نصوصٍ صِرفًا (Notepad أو VS Code)، اكتب توجيهاتك، احفظ الملف باسم robots.txt بأحرفٍ صغيرة بالضبط وبترميز UTF-8، ثمّ ارفعه إلى جذر الموقع (مجلّد public_html عبر cPanel أو FTP). وتأكّد أخيرًا بزيارة yourdomain.com/robots.txt في متصفّحك: إن ظهر محتواه، فقد نجح. وبعد الرفع، أعد جلب الملف من تقرير robots.txt في Search Console ليأخذ جوجل نسختك الجديدة أسرع، ثمّ افحص عنوانًا مهمًّا بأداة فحص العنوان لتتأكّد أنّ الزحف مسموحٌ كما أردت.
ولا بأس أن تستعين بمساعدٍ ذكيّ ليصوغ لك ملفًّا أو يشرح توجيهًا، لكن لا تنشر ما لا تفهمه ولم تختبره؛ سطرٌ واحد خاطئ هنا يكلّفك ظهورك كلّه.
خرافاتٌ يجب دفنها
- «robots.txt يزيل الصفحة من الفهرس»: لا؛ يمنع الزحف لا الفهرسة، والصفحة الممنوعة قد تُفهرَس إن رُبط إليها. الإزالة بـnoindex.[1]
- «يخفي المحتوى الحسّاس ويؤمّنه»: لا؛ الملف علنيٌّ يقرؤه الجميع، ولا يمنع الفهرسة. الحماية بكلمة مرور.[1]
- «توجيه crawl-delay يبطّئ جوجل»: لا؛ يتجاهله جوجل.[2]
- «حجب CSS وجافاسكربت آمن»: لا؛ يمنع جوجل من تصيير صفحتك ويضرّ فهمها تحت الفهرسة المعتمدة على الجوال.[2]
- «كلّ موقعٍ يجب أن يملك robots.txt»: اختياريّ؛ غيابه يعني السماح بزحف كلّ شيء.[2]
- «أكتب noindex داخل robots.txt»: أوقف جوجل دعم هذا التوجيه غير الرسميّ سنة 2019؛ استعمل وسم noindex أو الترويسة.[1]
من التوجيه إلى الخريطة
ضبطتَ الآن الباب الذي يمنع الزاحف ويوجّهه. لكنّ المنع نصف القصّة؛ نصفها الآخر أن تدلّ المحرّك على ما تريده أن يجده، لا أن يكتفي بما لا تريد. وقد رأيتَ في هذا الملف سطرًا واحدًا يفعل ذلك: توجيه Sitemap. ذلك موضوع المقال التالي: «خريطة الموقع (Sitemap)»، حيث ينتقل الحديث من منع الزحف إلى توجيهه. ابدأ اليوم بفتح ملف موقعك على yourdomain.com/robots.txt، واقرأه سطرًا سطرًا: أتفهم كلّ توجيهٍ فيه ولماذا هو موجود؟
المصادر
- Google Search Central: Introduction to robots.txt. أنّ الملف يتحكّم في الزحف لا الفهرسة، والصفحة الممنوعة قد تُفهرَس، والإزالة بـnoindex، وأنّه ليس أداة إخفاء.
- Google Search Central: How Google interprets the robots.txt specification. بناء الجملة، والمحارف البديلة، وقاعدة الأطول تطابقًا، وحدّ 500 كيبيبايت، والتخزين المؤقّت، وسلوك 4xx و5xx، وعدم دعم crawl-delay.
- Search Engine Roundtable: GSC robots.txt report replaces the removed Tester. إزالة أداة اختبار robots.txt القديمة أواخر 2023 وبديلها.
- Google Search Central: Google crawlers (Google-Extended). أنّ Google-Extended يتحكّم في استعمال المحتوى لتدريب Gemini ولا يؤثّر في بحث جوجل ولا الترتيب.
- OpenAI: OpenAI bots. زواحف GPTBot وOAI-SearchBot وضبطها عبر robots.txt.
- Common Crawl: CCBot. أنّ زاحف Common Crawl يحترم بروتوكول استبعاد الروبوتات.
- Google Search Central: Robots meta tag, data-nosnippet, and X-Robots-Tag specifications. أنّ توجيه noindex يصدر بوسم الروبوتات في صفحات HTML أو بترويسة X-Robots-Tag في استجابة HTTP (تصلح للملفّات غير HTML كـPDF)، وأنّ التوجيه لا يُرى إن كانت الصفحة محجوبةً في robots.txt.