انتقل للمحتوى
اعطال ووردبريس

خطأ 500 بسبب htaccess في ووردبريس: تجربة 200 ثم 500 ثم تعافي

خطأ 500 من اكثر الرسائل المزعجة لانه بحكيلك ان في مشكلة داخلية، لكنه ما بحكي اذا السبب PHP او إضافة او قاعدة خادم. في هاي التجربة شغلنا Apache مستقلا على الجهاز، وطلبنا نفس الصفحة ثلاث مرات: قبل تغيير ملف القواعد، بعد وضع تعليمة غير صالحة، وبعد استرجاع النسخة السليمة.

النتيجة كانت واضحة: 200 ثم 500 ثم 200. رسالة المتصفح بقيت عامة، لكن سجل Apache كتب Invalid command وسمى التعليمة التجريبية. التجربة معزولة وما لمست موقع الإنتاج ولا ملفاته.

اعتمدنا على دليل Apache الرسمي لملفات htaccess، وعلى حالة دعم ووردبريس فيها قاعدة Rewrite غير صالحة سببت 500. وفي نقاش ريديت ظهر مثال لخلط قواعد Nginx داخل htaccess.

نتيجة التجربة بالارقام

  • القواعد السليمة: HTTP 200.
  • بعد إضافة تعليمة غير معروفة: HTTP 500.
  • رسالة السجل: Invalid command.
  • بعد حذف السطر واسترجاع الملف: HTTP 200.

قبل التغيير

لقطة متصفح فعلية لصفحة المختبر وهي تعمل بحالة HTTP 200 قبل تغيير ملف htaccess
Apache قرأ الملف السليم وخدم الصفحة بحالة 200.

ثبتنا نقطة بداية سليمة قبل لمس اي سطر. هاي الخطوة مهمة: اذا ما عندك baseline، ممكن تنسب 500 لتغيير بريء بينما المشكلة كانت موجودة اصلا.

قاعدة غير صالحة و500 حقيقي

لقطة متصفح فعلية لخطأ 500 Internal Server Error بعد وضع تعليمة غير معروفة في htaccess
بعد إضافة تعليمة غير معروفة ظهر 500 Internal Server Error في المتصفح.

الصفحة نفسها ما تغيرت. اللي تغير فقط ملف .htaccess. لهذا السبب كان الفرق بين الردين دليلا قويا، مش مجرد تخمين.

بعد استرجاع الملف

لقطة متصفح فعلية بعد استرجاع ملف htaccess السليم وعودة الصفحة إلى HTTP 200
حذف التعليمة التجريبية أعاد نفس الطلب إلى 200.

السجل حدد السبب

تقرير التجربة يوضح تسلسل 200 ثم 500 ثم 200 ورسالة Invalid command من سجل Apache
المتصفح قال خطأ داخلي عام، لكن سجل Apache قال Invalid command.

قبل ما تغير PHP او تعطل إضافات، اقرأ سجل الخادم وقت الطلب. اذا السطر يذكر .htaccess وInvalid command او RewriteRule، ابدأ من قواعد الخادم. اذا يذكر PHP Fatal error وملف إضافة، مسار التشخيص مختلف.

فيديو توثيق التجربة الفعلية

هذا تسجيل شاشة صامت ومتواصل للاختبار وهو يحدث داخل بيئة محلية معزولة. تظهر الخطوات والنتائج الفعلية لحظة التنفيذ، من غير تركيب صور ثابتة.

تسجيل شاشة صامت ومتواصل لتجربة فعلية داخل بيئة محلية معزولة. يعرض الحالة السليمة، تنفيذ المسبب، ظهور النتيجة، ثم الاصلاح واعادة الفحص. لا يستخدم صورا مركبة.

خطوات آمنة لعلاج 500 المرتبط بـ htaccess

  1. خذ نسخة من الملف الحالي باسم واضح وتاريخ واضح.
  2. افتح سجل Apache او سجل الاستضافة وكرر الطلب مرة واحدة.
  3. اذا السجل سمى htaccess، غير اسمه مؤقتا على staging او في نافذة صيانة قصيرة.
  4. اختبر الصفحة والرابط الداخلي ولوحة التحكم.
  5. اذا عاد الموقع، انشئ ملفا بسيطا او احفظ الروابط الدائمة من ووردبريس لتوليد القواعد الاساسية.
  6. رجع قواعد الحماية والكاش واحدة واحدة مع اختبار بعد كل كتلة.
  7. لا تحذف النسخة القديمة قبل مقارنة ما فيها.

اذا لوحة التحكم ما بتفتح

استخدم مدير الملفات او SFTP وغير اسم .htaccess إلى اسم مؤقت مثل .htaccess-old. لا تعمل هاي الخطوة بدون نسخة، ولا تنس ان الملفات التي تبدأ بنقطة ممكن تكون مخفية في مدير الملفات.

كيف تفرق بين Apache وNginx؟

Apache ممكن يسمح بملف htaccess حسب إعداد AllowOverride. Nginx ما بقرأ htaccess اصلا وقواعده تكون في إعداد الخادم. نسخ تعليمات Nginx ووضعها في htaccess ممكن يعمل 500 لان Apache ما بعرفها.

قواعد Rewrite واشهر الاخطاء

  • اسم تعليمة مكتوب غلط.
  • flag غير صالح او اقواس ناقصة.
  • تعليمة تحتاج module مش محمل.
  • كتلة من إضافة كاش بقيت بعد حذف الإضافة.
  • قواعد حماية منسوخة لإصدار Apache مختلف.
  • سطر من إعداد Nginx تم لصقه في htaccess.

لا تستخدم 777 كحل

اعطاء صلاحيات 777 ما بصحح تعليمة غير معروفة، وبوسع الوصول للملف من غير داع. اذا السجل يقول Permission denied، افحص المالك والصلاحيات المطلوبة فقط. اذا يقول Invalid command، اصلح القاعدة نفسها.

بعد عودة الموقع

اختبر الرئيسية، مقال داخلي، صفحة 404، تسجيل الدخول، وREST API اذا موقعك يعتمد عليه. امسح الكاش بحذر وافحص ان الروابط الدائمة ما صارت ترجع 404. رجوع الصفحة الرئيسية لحاله مش كفاية.

حدود التجربة

استخدمنا صفحة ثابتة وApache معزولا حتى نثبت اثر ملف القواعد وحده. على استضافة حقيقية ممكن يكون 500 من PHP او WAF او امتلاء القرص او حد الذاكرة. لذلك نتيجة التجربة تعلمك طريقة العزل وقراءة السجل، وما بتقول ان كل 500 سببه htaccess.

الخلاصة

نفس الطلب رجع 200 مع الملف السليم، ثم 500 مع تعليمة غير صالحة، ثم 200 بعد الاسترجاع. المتصفح عرض رسالة عامة، والسجل اعطى السبب. احفظ نسخة، اقرأ اول سطر مرتبط بوقت الخطأ، وغير متغيرا واحدا كل مرة.