خطأ 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.
قبل التغيير

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

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

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

قبل ما تغير PHP او تعطل إضافات، اقرأ سجل الخادم وقت الطلب. اذا السطر يذكر .htaccess وInvalid command او RewriteRule، ابدأ من قواعد الخادم. اذا يذكر PHP Fatal error وملف إضافة، مسار التشخيص مختلف.
فيديو توثيق التجربة الفعلية
هذا تسجيل شاشة صامت ومتواصل للاختبار وهو يحدث داخل بيئة محلية معزولة. تظهر الخطوات والنتائج الفعلية لحظة التنفيذ، من غير تركيب صور ثابتة.
خطوات آمنة لعلاج 500 المرتبط بـ htaccess
- خذ نسخة من الملف الحالي باسم واضح وتاريخ واضح.
- افتح سجل Apache او سجل الاستضافة وكرر الطلب مرة واحدة.
- اذا السجل سمى htaccess، غير اسمه مؤقتا على staging او في نافذة صيانة قصيرة.
- اختبر الصفحة والرابط الداخلي ولوحة التحكم.
- اذا عاد الموقع، انشئ ملفا بسيطا او احفظ الروابط الدائمة من ووردبريس لتوليد القواعد الاساسية.
- رجع قواعد الحماية والكاش واحدة واحدة مع اختبار بعد كل كتلة.
- لا تحذف النسخة القديمة قبل مقارنة ما فيها.
اذا لوحة التحكم ما بتفتح
استخدم مدير الملفات او 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 بعد الاسترجاع. المتصفح عرض رسالة عامة، والسجل اعطى السبب. احفظ نسخة، اقرأ اول سطر مرتبط بوقت الخطأ، وغير متغيرا واحدا كل مرة.