حل مشكله Forbidden

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


🔍 ماذا تفعل أولًا

قبل التعديل في .htaccess:

نسّخ احتياطيًا من .htaccess الحالي والمجلدات المهمة.

تأكّد من أن صلاحيات المجلدات 755 والملفات 644.

تأكّد من وجود ملف index مثل index.html أو index.php في المجلد الجذري.

جرّب إعادة تسمية htaccess القديم (.htaccess_old) وتشغيل الموقع دونها، لترى إن الخطأ يختفي. إذا اختفى، المشكلة من محتوى htaccess.

⚙️ إعدادات الكود المقترحة في .htaccess

فيما يلي مجموعة من الأكواد التي تساعد في التحكم بالوصول وإصلاح مشاكل شائعة في .htaccess. ضِعها في البداية أو نهاية الملف حسب الحاجة، مع تفعيل/تعطيل التجربة حتى تصل للحالة التي تحل المشكلة.

# —— تشغيل إعادة الكتابة (Rewrite) إذا مفعّل على الاستضافة ——

<IfModule mod_rewrite.c>

    RewriteEngine On

    # إذا تستخدم موقع CMS مثل وردبريس

    RewriteBase /

    # إذا لم يكن الطلب لملف موجود أو مجلد موجود، يتم تحويله للـ index.php

    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule . /index.php [L]

</IfModule>

# —— تحديد الصفحة الرئيسية الافتراضية —— 

# تأكّد أن يكون هذا مطابق لملف index الموجود

DirectoryIndex index.php index.html

# —— السماح بالوصول من أي IP (إذا كان هناك تقييد خاطئ) —— 

# إذا في إعداد سابق يقوم بحظر، يمكنك تجربة السماح بهذه الطريقة

<RequireAll>

    Require all granted

</RequireAll>

# —— إزالة الحظر إن كان هناك deny كامل —— 

# إذا كان هناك شيء مثل "Deny from all" أو "Order deny,allow" يستخدم، علّق أو احذف

# مثال:

# Deny from all

# هذا الكود يُعلّقه:

# #Deny from all

# —— حماية htaccess نفسه من العرض —— 

<Files ~ "^\.ht">

    Require all denied

</Files>

# —— منع الدخول إلى ملفات معينة إن أردت ، لكن ليس كل شيء —— 

# مثال لمنع الدخول إلى ملفات التكوين أو السكربتات الخاصة

<FilesMatch "\.(env|config|ini|log|sh)$">

    Require all denied

</FilesMatch>

# —— التعامل مع mod_security إذا كانت مفعّلة وتسبّب 403 —— 

# ملاحظة: بعض الاستضافات لا تسمح بهذه الأوامر في .htaccess

<IfModule mod_security.c>

    SecFilterEngine Off

    SecFilterScanPOST Off

</IfModule>

# —— إزالة Browser’s directory listing إذا كان مفعل ويسبب خطأ —— 

Options -Indexes

# —— تمكين بعض الحقوق للصور ومجلدات الوسائط إن منعها شيء مثل hotlink protection —— 

# مثال يسمح للصور بأن تظهر للجميع:

<IfModule mod_rewrite.c>

    RewriteCond %{REQUEST_URI} \.(jpe?g|png|gif|svg|webp)$ [NC]

    RewriteRule .* - [L]

</IfModule>

✅ نموذج كامل مقترح لملف .htaccess

جرب هذا النموذج، عدّله حسب موقعك (إذا تستخدم وردبريس أو غيره):

# --------- Start .htaccess basic config ---------

# منع ظهور محتوى المجلدات

Options -Indexes

# تحديد الصفحة الرئيسية

DirectoryIndex index.php index.html

# حماية ملفات التكوين والـ htaccess

<Files ~ "^\.ht">

    Require all denied

</Files>


<FilesMatch "\.(env|config|ini|log|sh)$">

    Require all denied

</FilesMatch>

# السماح بالوصول الكامل افتراضيًا

<RequireAll>

    Require all granted

</RequireAll>

# إذا كنت مستخدم WordPress أو موقع يستخدم rewrite

<IfModule mod_rewrite.c>

    RewriteEngine On

    RewriteBase /

    # قواعد وردبريس القياسية

    RewriteRule ^index\.php$ - [L]

    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule . /index.php [L]

</IfModule>

# إذا استضافة تدعم mod_security وتسبب مشاكل

<IfModule mod_security.c>

    SecFilterEngine Off

    SecFilterScanPOST Off

</IfModule>

# --------- End .htaccess config ---------

⚠️ ملاحظات مهمة

بعض الخوادم لا تسمح بكل أوامر .htaccess، مثل SecFilterEngine أو Require all granted أو Require all denied. إذا أضفتها وظهرت لك “500 Internal Server Error” فاحذفها.

بعض الاستضافات تستخدم ModSecurity أو جدار حماية خارجي لا يظهر من .htaccess. في هذه الحالة، قد تحتاج تطلب من دعم الاستضافة أن يرفعوا الحظر أو يعطوك صلاحية للوصول.

قد يكون الخطأ بسبب صلاحية المجلد الأبوي (parent folder) وليس المجلد الذي تراه؛ تأكّد أن كل المجلدات حتى الجذر صلاحياتها صحيحة.

تأكّد من أن ملكية الملفات (owner / group) تطابق الحساب الذي تخدم به الموقع، إن كانت الاستضافة Linux.

إرسال تعليق

0 تعليقات