تخطَّ إلى المحتوى
الأدلة

ما هو robots.txt وكيف يُكتب؟

دليل إجرائي · 14 دقيقة قراءة · آخر تحديث 15 سبتمبر 2026

إجابة موجزة

كيف تُحجب روبوتات الذكاء الاصطناعي عبر robots.txt؟

ملف robots.txt ملف نصي في جذر الموقع يبيّن أي زاحف يجوز له جلب أي مسار، وقد صار معياراً بـRFC 9309. ويتكوّن من مجموعات يفتتحها سطر User-agent، وتحتها قواعد Disallow وAllow. وإذا كان للزاحف مجموعة خاصة به فإن مجموعة الرمز العام لا تنطبق عليه إطلاقاً — وهنا بالضبط تنكسر معظم الملفات المكتوبة لحجب روبوتات الذكاء الاصطناعي.

أهم النقاط

  • إذا كان للزاحف مجموعة User-agent خاصة به فلا تنطبق عليه قواعد مجموعة الرمز العام (*)؛ ولا تُدمج المجموعتان أبداً.
  • عند تعارض القواعد يفوز أطول نمط مسار؛ وإن تساوى الطول طُبّقت القاعدة الأقل تقييداً، أي Allow.
  • لا توجد فئة واحدة اسمها «روبوت ذكاء اصطناعي»: فالتدريب والبحث والجلب الفوري تأتي برموز منفصلة وتحتاج قرارات منفصلة.
  • حجب زاحف التدريب لمزوّد ما لا يحجب زاحف البحث التابع له — فبإغلاق GPTBot يمكن الظهور في بحث ChatGPT.
  • ملف robots.txt ليس أداة إزالة من الفهرس: فالصفحة المحجوبة الموصولة من مواقع أخرى قد تُدرَج بعنوانها، ووسم noindex عليها لا يعمل لأنه لا يُقرأ أصلاً.
  • أكثر أسباب تعذّر وصول الروبوت إلى الموقع شيوعاً ليس robots.txt بل قاعدة في طبقة شبكة التوصيل أو الجدار الناري؛ ومفتاح «Block AI bots» في Cloudflare أشهر الأمثلة.

ما هو robots.txt وأين يوجد؟

ملف robots.txt ملف نصي يُخبر الزواحف بأي أجزاء الموقع يجوز لها جلبها. ولا يُعتدّ به إلا في الجذر: فلـexample.com يُقرأ ‎/robots.txt، أما example.com/blog/robots.txt فلا يعني شيئاً. ولكل نطاق فرعي ملفه — فـblog.example.com يحتاج ملفاً مستقلاً، وقواعد النطاق الرئيسي لا تنتقل إليه.

صار الملف معياراً رسمياً بـRFC 9309 عام 2022 — فهو، بخلاف llms.txt، اتفاق قبلته الزواحف معاً. ومع ذلك ليس أداة أمان: فالالتزام بالقواعد متروك للزاحف، والكاشط الخبيث يمرّ دون أن يقرأ الملف. وكتابة مسار يجب أن يبقى سرياً في robots.txt تعادل إعلانه في قائمة عامة.

كيف يُكتب ملف robots.txt؟

يتكوّن الملف من مجموعات. تُفتتح كل مجموعة بسطر User-agent أو أكثر، تليه القواعد المنطبقة على ذلك الزاحف. وأربع توجيهات تكفي:

  • ‏User-agent: يسمّي الزاحف المكتوبة له القواعد. والرمز العام (*) يعني «كل من ليست له مجموعة خاصة» — لا «الجميع».
  • ‏Disallow: يمنع جلب العناوين التي تبدأ بالمسار المذكور. وإن تُرك فارغاً لم يمنع شيئاً.
  • ‏Allow: يعيد فتح مسار من داخل Disallow؛ وموضعه الحقيقي مجلّد مفتوح واحد تحت دليل مغلق.
  • ‏Sitemap: العنوان الكامل لخريطة الموقع. مستقلّ عن المجموعات، ويجوز وضعه في أي مكان، ويُكتب عادةً في الآخر.
ملف كامل لموقع مؤسسي يريد أن يكون ظاهراً
# example.com/robots.txt

# الافتراضي: كل زاحف بلا مجموعة خاصة به.
User-agent: *
Disallow: /cart/
Disallow: /account/
Disallow: /search
Disallow: /*?sort=
Allow: /

# زواحف التدريب — قرار ترخيص المحتوى.
# حذف السطرين أدناه يغلق المحتوى أمام التدريب.
User-agent: GPTBot
Allow: /

User-agent: Google-Extended
Allow: /

User-agent: ClaudeBot
Allow: /

# البحث والجلب الفوري — من هنا يأتي الظهور.
User-agent: OAI-SearchBot
Allow: /

User-agent: ChatGPT-User
Allow: /

User-agent: PerplexityBot
Allow: /

User-agent: Perplexity-User
Allow: /

User-agent: Claude-SearchBot
Allow: /

User-agent: Claude-User
Allow: /

Sitemap: https://example.com/sitemap.xml

انتبه للكلفة: بما أن لكل زاحف الآن مجموعته، فإن قاعدتَي ‎/sepet/ و‎/hesabim/ في مجموعة الرمز العام لا تنطبقان عليه. ولتقييد تلك الروبوتات أيضاً يجب تكرار أسطر Disallow نفسها داخل كل مجموعة.

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

هذا أكثر أجزاء الملف سوء فهم، ويعود إلى قاعدتين. الأولى اختيار المجموعة: يجد الزاحف المجموعة التي يطابق وكيلُ المستخدم فيها اسمَه بأكثر تحديد، ويطبّقها وحدها. وتوثيق Google صريح — فالمجموعة الخاصة ومجموعة الرمز العام لا تُدمجان أبداً.

ملف يفعل عكس المقصود
User-agent: *
Disallow: /private/
Disallow: /admin/

User-agent: GPTBot
Disallow: /training-data/

# المقصود: إبعاد GPTBot عن كل شيء وإغلاق ‎/training-data/ أمام الجميع.
# الواقع: لأن لـGPTBot مجموعة خاصة، لا ينطبق عليه السطران أعلاه إطلاقاً.
#         صار بإمكانه جلب ‎/private/ و‎/admin/ بحرية.

الصواب تكرار Disallow: /gizli/ وDisallow: /admin/ داخل مجموعة GPTBot. ففتح مجموعة يُخرج ذلك الزاحف من كل القواعد العامة التي كتبتها.

والقاعدة الثانية للتعارض داخل المجموعة الواحدة: يفوز أطول نمط مسار. وعند تساوي الأطوال تطبّق Google القاعدة الأقل تقييداً، أي Allow. ولهذا يبقى المدوّنة مفتوحة عند كتابة «Disallow: /» مع «Allow: /blog/»: فنمط Allow أطول.

النتيجة العملية: البحث في robots.txt عن «Disallow» لا يثبت شيئاً. فالقاعدة السارية تحدّدها مطابقة المجموعات وطول النمط، والاستنتاج بقراءة الملف بالعين خاطئ في الغالب.

ما زواحف الذكاء الاصطناعي وما عمل كل منها؟

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

الزواحف الموثّقة لدى مشغّليها وما يكلّفه حجب كل منها

  • GPTBot

    المشغّل
    OpenAI
    المهمة
    تدريب النماذج
    إذا حُجب
    يبقى المحتوى خارج بيانات التدريب المقبلة؛ ولا يتأثّر بحث ChatGPT
  • OAI-SearchBot

    المشغّل
    OpenAI
    المهمة
    فهرس بحث ChatGPT
    إذا حُجب
    لا تظهر مصدراً في إجابات ChatGPT
  • ChatGPT-User

    المشغّل
    OpenAI
    المهمة
    الجلب عند فتح المستخدم رابطاً
    إذا حُجب
    لا يستطيع المستخدم فتح صفحتك من داخل ChatGPT
  • OAI-AdsBot

    المشغّل
    OpenAI
    المهمة
    فحص سلامة صفحات هبوط الإعلانات
    إذا حُجب
    يتعذّر التحقّق من صفحة هبوط إعلانك
  • Googlebot

    المشغّل
    Google
    المهمة
    فهرس Google — ومنه تُغذّى AI Overviews
    إذا حُجب
    تخرج من بحث Google وAI Overviews معاً
  • Google-Extended

    المشغّل
    Google
    المهمة
    تدريب Gemini وتأسيسه
    إذا حُجب
    تُستبعَد من تدريب Gemini؛ ولا يتأثّر البحث ولا AI Overviews
  • GoogleOther

    المشغّل
    Google
    المهمة
    زحف بحثي لفرق المنتجات
    إذا حُجب
    لا أثر على الظهور في البحث
  • ClaudeBot

    المشغّل
    Anthropic
    المهمة
    تدريب النماذج
    إذا حُجب
    لا يُستخدم المحتوى في تدريب نماذج Anthropic
  • Claude-SearchBot

    المشغّل
    Anthropic
    المهمة
    جودة نتائج البحث
    إذا حُجب
    لا تظهر في نتائج بحث Claude
  • Claude-User

    المشغّل
    Anthropic
    المهمة
    الجلب بطلب المستخدم
    إذا حُجب
    لا يستطيع المستخدم فتح صفحتك من داخل Claude
  • PerplexityBot

    المشغّل
    Perplexity
    المهمة
    فهرس Perplexity
    إذا حُجب
    لا تكون مصدراً في إجابات Perplexity
  • Perplexity-User

    المشغّل
    Perplexity
    المهمة
    الجلب بطلب المستخدم
    إذا حُجب
    لا يستطيع المستخدم فتح صفحتك من داخل Perplexity

يذكر توثيق OpenAI نفسه أن «قواعد robots.txt قد لا تنطبق» على ChatGPT-User، بحجّة أن الطلب فعل المستخدم لا زحف آلي. فإن نويت حجب هذا الروبوت فخطّط وأنت تعلم أن النتيجة غير مضمونة.

أي الروبوتات تُحجب وأيها يبقى مفتوحاً؟

يتبع القرارُ نموذجَ العمل، ولا توجد إجابة واحدة صحيحة. فللناشرين الذين يكون المحتوى منتجهم — مواقع الأخبار والمنشورات البحثية والأرشيفات المدفوعة — يكون حجب زواحف التدريب وجيهاً: فالمبيع هو المحتوى نفسه. أما شركات الخدمات والمنتجات فتنعكس الحسبة عندها: المحتوى ليس المبيع بل ما يقود إلى البيع.

القرار المقترح بحسب نموذج العمل

  • شركة تبيع خدمات ومنتجات

    روبوتات التدريب
    مفتوح
    روبوتات البحث
    مفتوح
    الجلب الفوري
    مفتوح
  • التجارة الإلكترونية

    روبوتات التدريب
    مفتوح
    روبوتات البحث
    مفتوح
    الجلب الفوري
    مفتوح
  • موقع أخبار أو أرشيف مدفوع

    روبوتات التدريب
    مغلق
    روبوتات البحث
    مفتوح
    الجلب الفوري
    مفتوح
  • ناشر أبحاث وبيانات

    روبوتات التدريب
    مغلق
    روبوتات البحث
    مفتوح
    الجلب الفوري
    حسب الحالة
  • محتوى مجتمعي خلف عضوية

    روبوتات التدريب
    مغلق
    روبوتات البحث
    الصفحات العامة فقط
    الجلب الفوري
    الصفحات العامة فقط

وفي العمودين معاً، نادراً ما يكون حجب زواحف البحث والجلب الفوري صواباً. فهو المعادل، في المحرّكات التوليدية، لرفض أن تكون قابلاً للعثور عليك في البحث — وكلفته لا تظهر فوراً بل بعد أشهر حين يبقى المنافسون وحدهم في الإجابات.

متى يسري تغيير robots.txt؟

ليس فوراً — وجهل ذلك يسبّب كثيراً من الهلع بلا داعٍ. فـGoogle تخزّن robots.txt مؤقتاً حتى 24 ساعة عادةً، وأطول حين يتعذّر التحديث. ويذكر توثيق OpenAI أن سريان التغيير في أنظمتها يستغرق نحو 24 ساعة.

وتعذّر الوصول إلى الملف قرارٌ أيضاً. فحين يعيد robots.txt رمز 5xx توقف Google الزحف 12 ساعة وتعيد المحاولة؛ وإن استمرّ فشل الجلب استخدمت النسخة المخزّنة حتى 30 يوماً. وبعد انقضائها، إن كان الموقع متاحاً عموماً، تتصرّف كأن لا قيود. أي أن خطأ الخادم يعني، بعد حدّ معيّن، «كل شيء مسموح».

حدٌّ أخير: تفرض Google حدّاً لحجم robots.txt قدره 500 كيبيبايت وتتجاهل ما بعده. ونادراً ما تقترب الملفات المكتوبة يدوياً من هذا الحد، بينما تبلغه المتاجر الكبيرة ذات قوائم Disallow المولَّدة آلياً — وتُتجاهل القواعد بعد الحدّ في صمت.

سمحتُ في robots.txt والروبوت ما زال لا يدخل: فخّ الجدار الناري

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

وCloudflare أشهر الأمثلة. فمفتاح «Block AI bots» في إعدادات الأمان يحجب الروبوتات الموثَّقة المصنَّفة كزاحفة لأغراض تدريب الذكاء الاصطناعي، إضافةً إلى عدد من الروبوتات غير الموثَّقة ذات السلوك المشابه؛ ووفق التوثيق يستثني الروبوتات مزدوجة الغرض المستخدَمة للتدريب والبحث معاً. وتُوقف Cloudflare هذا المفتاح الواحد في 15 سبتمبر 2026 وتستبدل به سياسات تتيح إدارة سلوك البحث والوكلاء والتدريب كلٍّ على حدة.

  • في Cloudflare افحص مفتاح «Block AI bots» ضمن إعدادات الأمان ووضع Bot Fight Mode؛ وكلاهما يعمل باستقلال عن robots.txt.
  • ابحث في مجموعات قواعد WAF المُدارة عن قواعد حجب مكتوبة بحسب فئات الروبوتات — وغالباً ما فُعّلت قبل سنوات ونُسيت.
  • على الخادم، تحقّق ممّا إذا كانت ModSecurity أو fail2ban أو قواعد تحديد المعدّل تُسقط وكلاء الزواحف.
  • إن كانت إضافة «الروبوتات السيئة» أو إضافة أمان مثبّتة — وهو شائع في WordPress — فافتح قائمة وكلاء المستخدم التي تحجبها واقرأها.
  • إن وُجد حجب جغرافي: فعناوين خروج الزواحف خارج تركيا، والحجب على مستوى الدول يقطعها أيضاً.

كيف أتحقّق مما حجبته أو فتحته؟

تلزم ثلاث عمليات تحقّق، وكلٌّ منها يجيب عن سؤال مختلف: ماذا يقول الملف، وماذا تفعل طبقة الحافّة، وهل وصل الروبوت فعلاً.

الطلب بعين الروبوت: هل تُسقطه طبقة الحافّة؟
# 1) الملف نفسه
$ curl -s https://example.com/robots.txt | head -40

# 2) اطلب صفحة حقيقية بوكيل مستخدم الروبوت.
$ curl -s -o /dev/null -w "%{http_code}\n" \
    -A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot" \
    https://example.com/

# 200 -> يمرّ
# 403 / 503 / 429 -> ليس robots.txt، بل طبقة الحافّة تحجبه

# 3) تأكّد من سجلّ الخادم أن الروبوت وصل فعلاً.
$ grep -Ei "GPTBot|OAI-SearchBot|ClaudeBot|PerplexityBot" /var/log/nginx/access.log \
    | awk '{print $1, $12, $13}' | sort | uniq -c | sort -rn | head

والأمر الثالث يفصل الحقيقي عن المزيّف أيضاً: فوكيل المستخدم يمكن انتحاله، أما العنوان فلا. تنشر OpenAI نطاقات عناوين زواحفها على openai.com/gptbot.json وopenai.com/searchbot.json، وAnthropic على claude.com/crawling/bots.json، وGoogle في ملف googlebot.json.

ما الفرق بين robots.txt وnoindex؟

يمنع robots.txt الزحفَ، ويمنع noindex الفهرسةَ — والخلط بينهما ينتج واحداً من أمكر أخطاء تحسين محركات البحث. فإن حجبت صفحة في robots.txt لم يستطع الزاحف جلبها؛ ولأنه لم يجلبها لم يقرأ وسم noindex فيها. وإن كانت الصفحة موصولة من مواقع أخرى فقد تُدرَج بعنوانها وحده، ويكون طريق إزالتها قد أُغلق.

والترتيب الصحيح هو: إن أردت إخراج صفحة من الفهرس فاتركها مفتوحة في robots.txt وضع noindex عليها. يدخل الزاحف، ويقرأ الوسم، ويُسقط الصفحة. وبعد خروجها يمكنك إغلاق الزحف في robots.txt إن شئت.

ما أكثر أخطاء robots.txt شيوعاً؟

  • نقل سطر «Disallow: /» من بيئة التجربة إلى الإنتاج. سطر واحد، والموقع كله. وكل فريق بلا فحص لـrobots.txt في قائمة الإطلاق يمرّ بهذا مرة.
  • فتح مجموعة خاصة بزاحف ونسيان تكرار القيود العامة داخلها — فيترك الملفُ الروبوتَ الذي أردت تقييده أكثر حرية من الجميع.
  • حجب أدلة CSS وJavaScript. فالزاحف الذي لا يستطيع العرض يرى محتوى ناقصاً؛ وهذا ما زال يحدث في مواقع تغلق ‎/wp-includes/ أو ‎/assets/.
  • كتابة عنوان كامل في سطر Disallow. فالقواعد تبدأ بمسار (‎/sepet/) لا بنطاق؛ وسطرٌ مكتوب فيه https://example.com/sepet/ لا يفعل شيئاً.
  • كتابة سطر Sitemap بمسار نسبي. فخريطة الموقع تتطلّب عنواناً مطلقاً: لا ‎/sitemap.xml بل https://example.com/sitemap.xml.
  • إغفال حساسية حالة الأحرف. فالمسارات حسّاسة لحالة الأحرف؛ و‎/Urunler و‎/urunler مساران مختلفان.

أسئلة متكررة

ماذا يحدث إن لم يوجد ملف robots.txt؟

إن لم يوجد الملف وأعاد العنوان 404، افترضت الزواحف أن لا قيود وزحفت بحرية. وهذا غير ضارّ لمعظم المواقع المؤسسية؛ لكن المشكلة أن أحداً لا يعرف أغيابُه قرارٌ أم عملٌ لم يُنجز. ونشر ملف فارغ — مجرّد User-agent: * وسطر Disallow فارغ — يجعل القرار واضحاً.

إن حجبتُ GPTBot، هل أختفي من ChatGPT تماماً؟

لا. فـGPTBot للتدريب فقط. وحين يبحث ChatGPT للإجابة يستخدم OAI-SearchBot، وحين يفتح المستخدم رابطاً يستخدم ChatGPT-User. وبإبقاء هذين مفتوحين يمكنك الظهور مصدراً في الإجابات مع بقاء GPTBot محجوباً — وهذا بالضبط هو الضبط الصحيح لكثير من الشركات.

هل يعمل توجيه Crawl-delay؟

يتوقّف ذلك على الزاحف، ولذلك لا يُعدّ ضبطاً موثوقاً للمعدّل. يعرض توثيق Anthropic مثالاً لـCrawl-delay مع ClaudeBot؛ بينما لا تستخدم Google هذا التوجيه إطلاقاً ويُدار معدّل الزحف عبر Search Console. وإن كان حِمل الخادم مشكلة حقيقية فالحل تحديد المعدّل على الخادم لا سطر في robots.txt.

إن رفعتُ الحجب عن روبوت، فمتى يعود؟

القرار قابل للتراجع لكن لا فورياً. أولاً يجب أن تنتهي صلاحية التخزين المؤقت — وهي 24 ساعة عادةً لدى Google، وتذكر OpenAI نحو 24 ساعة. ثم يتوقّف الأمر على وتيرة زيارة الزاحف لموقعك أصلاً، وقد تبلغ أسابيع في موقع صغير نادر التحديث. الحجب سريع، والعودة بطيئة.

هل توجد أداة لاختبار robots.txt؟

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

استعلامات تجيب عنها هذه الصفحة

  • ما هو robots.txt
  • كيفية كتابة robots.txt
  • مثال robots.txt
  • حظر GPTBot

لنتحدّث عن مشروعك.

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