403 Forbidden: لماذا يُرفض الوصول وكيف تصلح ذلك

403 Forbidden يعني أن الخادم فهم الطلب لكنه يرفض تنفيذه، وغالبًا بسبب الصلاحيات أو قواعد المنع أو جدار حماية.

افحص رمز حالة رابط

403 Forbidden يعني أن الخادم فهم الطلب ويرفض تنفيذه. وتسجيل الدخول مرة أخرى لن يفيد: فعلى خلاف 401، المشكلة ليست في نقص بيانات الدخول بل في قاعدة تقول «ليس لك»، مثل صلاحيات الملفات أو حظر عنوان IP أو قرار جدار حماية أو إعدادات الخادم.

التعريف

يقول RFC 9110، القسم 15.5.4 إن الخادم «فهم الطلب لكنه يرفض تنفيذه»، وإن على العميل ألا يعيد المحاولة ببيانات الدخول نفسها. وقد يشرح الخادم السبب في جسم الرد، أو يرد بـ 404 بدلًا من ذلك إذا أراد إخفاء وجود المورد أصلًا.

الأسباب الشائعة

  • صلاحيات الملفات أو ملكيتها. لا يستطيع مستخدم خادم الويب قراءة الملف أو دخول المجلد. القيم الآمنة المعتادة هي 644 للملفات و755 للمجلدات.
  • لا يوجد ملف index مع تعطيل عرض محتويات المجلد. يسجل Nginx العبارة «directory index of … is forbidden»؛ ويعيد Apache الرمز 403 مع Options -Indexes.
  • قواعد المنع (deny) في .htaccess أو إعدادات الخادم (Require all denied أو deny all)، أو قوائم سماح لعناوين IP، أو الحظر الجغرافي.
  • جدار حماية تطبيقات الويب (WAF) وحماية الروبوتات: قواعد CDN أو إضافات الأمان أو جدران حماية الاستضافة التي تحجب الزواحف، ومنها Googlebot أو روبوتات بحث الذكاء الاصطناعي.
  • حماية الروابط المباشرة (Hotlink) للصور والتنزيلات.

التأثير على السيو

وفق وثائق Google لرموز حالة HTTP، يُعامل 403 مثل رموز 4xx الأخرى: لا يُفهرس الرابط، وتُزال النسخ المفهرسة، ويُتجاهل محتوى الرد. ويسميه Search Console «Blocked due to access forbidden (403)». كما تقول Google ألا تستخدم 403 لإبطاء Googlebot لأنه لن يقلل الزحف. وإذا أعاد robots.txt نفسه الرمز 403، فإن Google تعد الملف غير موجود وتفترض عدم وجود قيود على الزحف.

والحالة الخطيرة هي جدار حماية يحجب الزواحف بينما يتصفح البشر الموقع عاديًا: تختفي الترتيبات ولا يرى أحد في الفريق أي خطأ. وينطبق ذلك على البحث بالذكاء الاصطناعي. فإذا كانت شبكة CDN تعيد 403 إلى OAI-SearchBot أو Claude-SearchBot، فلا تستطيع هذه الخدمات جلب صفحاتك أو الاستشهاد بها، مهما سمح به robots.txt.

كيف تصلح 403

لأصحاب المواقع

  1. اعرف هل يحصل الجميع على 403 أم بعض العملاء فقط. فإذا حصلت أداة فحص على 403 ولم يحدث ذلك في متصفحك، فراجع جدار الحماية أو إعدادات الروبوتات في CDN أو إضافة الأمان.
  2. اسمح لزواحف محركات البحث الموثَّقة. تشرح Google كيف تتحقق من Googlebot بالبحث العكسي في DNS أو بنطاقات IP المنشورة؛ اعتمد على ذلك لا على سلسلة user-agent.
  3. اطلب من الاستضافة مراجعة الصلاحيات وقواعد الخادم إذا تأثر مجلد كامل أو الموقع كله.

للمطورين

# أعد ضبط الصلاحيات المعتادة (عدّل المسار والمالك أولًا)
find /var/www/site -type d -exec chmod 755 {} \;
find /var/www/site -type f -exec chmod 644 {} \;

# Nginx: تأكد أن للمجلدات ملف index
index index.html index.php;

استخدم 403 لإخفاقات التفويض الحقيقية، لا للصفحات المفقودة ولا لتحديد معدل الطلبات، فهذا هو دور 429.

كيف تتحقق

تطلب أداة فحص حالة HTTP الروابط من خوادمنا، خارج جلسة دخولك. وتذهب أداة فحص زواحف الذكاء الاصطناعي أبعد من ذلك: تطلب صفحتك بوكلاء مستخدم (user-agents) حقيقيين للذكاء الاصطناعي لاكتشاف أخطاء 403 الصادرة عن جدار الحماية والتي لا يفسرها robots.txt.

HTTP/1.1 403 Forbidden
Server: nginx
Content-Type: text/html
Content-Length: 146

الأسئلة الشائعة

لماذا أحصل على 403 بينما لا يحصل عليه الآخرون؟

لأن شيئًا في طلبك يطابق قاعدة حظر: عنوان IP أو الدولة أو الشبكة أو إضافة المتصفح أو الكوكيز. ومصدر ذلك عادةً جدران الحماية وإضافات الأمان، فراجع سجلاتها بحثًا عن طلبك.

كيف أعرف أن Googlebot يحصل على 403 من موقعي؟

ابحث عن «Blocked due to access forbidden (403)» في تقرير فهرسة الصفحات في Search Console، وراجع تقرير إحصاءات الزحف. ثم ابحث في سجلات جدار الحماية أو CDN عن طلبات محظورة من عناوين IP موثَّقة لـ Googlebot.

هل ترد الصفحات الخاصة بـ 403 أم 404؟

كلاهما يُبقي الصفحة خارج فهرس Google. يسمح RFC 9110 بـ 404 عندما تفضل ألا تكشف وجود الصفحة؛ أما 403 فأكثر صدقًا عندما يعرف المستخدمون أن الصفحة موجودة لكن ليست لديهم صلاحية الوصول.