الخطأ 403 يختلف عن 404 اختلافًا مفيدًا: الخادم وجد ما طلبته. ثم قال شيءٌ ما «لا». وهذا يحصر الأمر في أربعة.

١. لا يوجد ملفّ فهرس

طلب مجلّد لا index.php فيه ولا index.html، وسرد المجلّدات مُطفأ، يعطي 403. وهذا سلوك صحيح، ويعني غالبًا أن نشرًا لم يكتمل.

ls -la /var/www/site/

٢. الخادم لا يستطيع قراءته

ملفٌّ لا يقدر مستخدم الويب على قراءته يُرفَض. افحص المالك كما تفحص الصلاحيات — فالصلاحيات سليمة أكثر بكثير ممّا يكون المالك سليمًا.

namei -l /var/www/site/index.php

الأمر namei يمشي المسار كلّه ويطبع الصلاحيات عند كل مستوى. ومجلّدٌ في المنتصف بلا بتّ تنفيذ يحجب كل ما تحته — وهذه هي الحالة التي تفوت الناس.

٣. قاعدةٌ تمنعه

grep -rn "deny\|Require all denied" /etc/nginx/sites-enabled/ .htaccess 2>/dev/null

قواعد الأمان التي تمنع بالامتداد أو بالمجلّد هي نوع الـ403 المقصود. فإن كان ملفّك أنت هو الواقع في الشبكة، فالقاعدة أوسع ممّا ينبغي.

٤. جدار ناريّ أو جدار تطبيقات

إن جاء الـ403 مع صفحة ليست صفحتك، فهو من شيء أمام الخادم. وسجلّه هو نفسه يسمّي القاعدة التي انطبقت.

خطأ 403 على wp-admin بعد تحديث إضافة هو غالبًا إضافة أمان تُقفل مسارًا تظنّه تحت الهجوم. وسجلّها سيقول ذلك، وتعطيلها بإعادة تسمية مجلّدها أسرع طريقة للتأكّد.