حل خطأ 404 في صفحات ووردبريس بعد نقل الموقع
نقلت موقع ووردبريس، الصفحة الرئيسية فتحت، لكن كل مقال او صفحة داخلية تعطي 404؟ اول احتمال منطقي هو ان قواعد الروابط الدائمة لم تنتقل او لم تعد مناسبة للخادم الجديد. لكن لازم نميز بين خطأ صادر من ووردبريس وخطأ صادر من Apache او Nginx، لان زر حفظ الروابط ما يصلح كل الحالات.
في مختبرنا عطلنا قواعد اعادة الكتابة الداخلية بدون حذف المقال او تغيير رابطه. نفس الرابط انتقل من استجابة 200 الى 404، وبعد اعادة توليد القواعد رجع الى 200. التجربة تثبت جزء ووردبريس من المشكلة، وتوضح متى ننتقل لفحص اعداد الخادم.
فيديو توثيق التجربة الفعلية
هذا تسجيل شاشة صامت ومتواصل للاختبار وهو يحدث داخل بيئة محلية معزولة. تظهر الخطوات والنتائج الفعلية لحظة التنفيذ، من غير تركيب صور ثابتة.

ماذا غيرنا في التجربة؟
استخدمنا ووردبريس 7.1 مع PHP 8.3.30 وMySQL 8.4.3. كان الموقع يملك 95 قاعدة اعادة كتابة، ورابط المقال الجميل يعمل بدون رقم تعريف او معاملات في آخره. حفظنا الحالة، ثم استبدلنا القواعد الداخلية مؤقتا بقاعدة واحدة لا تطابق رابط المقال.
الملف والمقال بقيا موجودين في قاعدة البيانات، لكن ووردبريس ما عاد يعرف كيف يحول مسار الرابط الى طلب المقال الصحيح. النتيجة كانت صفحة 404 من القالب نفسه.

بعدها نفذنا اعادة توليد للقواعد، وهي العملية التي يشغلها حفظ صفحة الروابط الدائمة. عاد عدد القواعد الى 95، وعاد نفس الرابط بحالة 200.

الحل الاول: احفظ الروابط الدائمة مرة واحدة
- خذ نسخة من ملف
.htaccessاذا كان موقعك على Apache وفيه قواعد مخصصة. - من لوحة ووردبريس افتح الاعدادات ثم الروابط الدائمة.
- تأكد ان البنية المعروضة هي البنية التي تريدها، ولا تغيرها لمجرد التجربة.
- اضغط حفظ التغييرات مرة واحدة.
- افتح رابط مقال وصفحة وتصنيف في نافذة خاصة وتأكد من كود الاستجابة.
حسب توثيق الدالة flush_rewrite_rules، العملية تحذف قواعد اعادة الكتابة ثم تعيد انشاءها. التنفيذ الكامل يحاول ايضا تحديث .htaccess، بينما التنفيذ الداخلي فقط يجدد الخيار المحفوظ في قاعدة البيانات.
لا تضف كودا ينفذ هذه العملية مع كل زيارة. التوثيق نفسه ينبه انها عملية مكلفة، وتستخدم عند الحاجة مثل تفعيل اضافة تسجل نوع محتوى جديد، او بعد نقل تسبب بقواعد قديمة.
اعرف من الذي يعرض صفحة 404
اذا ظهرت صفحة فيها شعار موقعك وقائمته ورسالة القالب، فغالبا الطلب وصل الى ووردبريس لكنه لم يجد محتوى يطابق المسار. هذه هي الحالة التي صنعناها في التجربة.
اما اذا ظهرت صفحة بيضاء او بسيطة مكتوب فيها Apache او Nginx او اسم شركة الاستضافة، فالطلب قد لا يصل الى ووردبريس اصلا. وقتها حفظ الروابط ممكن يجدد قواعد ووردبريس، لكنه لن يفعل وحدة اعادة الكتابة في Apache ولن يعدل ملف اعداد Nginx.
اختبار مفيد: افتح المقال بصيغة الرقم مثل /?p=29 بعد استبدال الرقم بمعرف مقال عندك. اذا اشتغل الرابط الرقمي وفشل الرابط الجميل، فالمقال موجود والمشكلة اقرب الى طبقة اعادة الكتابة. لا تعتمد على هذا الاختبار وحده اذا كان الموقع يفرض تحويلات او يستخدم كاشا قويا.
اذا كان الخادم Apache
افحص وجود .htaccess في المجلد نفسه الذي يحتوي ملف index.php. لا تستبدله بنسخة جاهزة قبل حفظ نسخة منه، لانه قد يحتوي تحويل HTTPS او قواعد حماية او تعليمات خاصة بالاستضافة.
اذا حفظت الروابط ولم يتغير الملف، ممكن تكون صلاحيات الكتابة مانعة ووردبريس. واذا كانت قواعد ووردبريس موجودة لكن الخادم يعرض 404 خاصا به، اطلب من شركة الاستضافة التأكد من تفعيل mod_rewrite والسماح بقراءة قواعد .htaccess. توثيق تخصيص الروابط الدائمة يوضح ان الخادم نفسه لازم يكون مهيأ حتى تعمل الروابط الجميلة.
اذا كان الخادم Nginx او IIS
Nginx لا يستخدم .htaccess. يحتاج قاعدة في اعداد الخادم تمرر المسارات غير الموجودة كملفات فعلية الى index.php. اذا لوحة الاستضافة تدير Nginx، لا تلصق اعدادات من مقال عشوائي؛ ارسل للدعم رابطا يفشل ورابط الصفحة الرئيسية وكود الاستجابة، واطلب فحص قاعدة تمرير ووردبريس.
على IIS تكون قواعد الروابط عادة في web.config. دليل ووردبريس عن تشغيل ووردبريس داخل مجلد يوضح الفرق بين .htaccess وweb.config. المهم هنا ان اسم ملف القواعد يعتمد على الخادم، مش على ووردبريس وحده.
فحوص النقل التي لا نتخطاها
- تأكد من عنوان ووردبريس وعنوان الموقع في الاعدادات العامة، وانهما يستخدمان النطاق والبروتوكول الصحيحين.
- تأكد ان الملفات وقاعدة البيانات تخصان التثبيت نفسه، خصوصا اذا بقيت نسخة قديمة على الخادم.
- افحص التحويل من HTTP الى HTTPS ومن www الى النسخة المعتمدة، وتجنب سلسلة تحويلات متعارضة.
- امسح كاش ووردبريس والاستضافة وCDN بعد تعديل القواعد.
- جرب صفحة ومقالا وتصنيفا، لان نجاح رابط واحد لا يثبت ان كل البنى سليمة.
يوصي دليل نقل ووردبريس الرسمي بمراجعة بنية الروابط وتحديثها بعد النقل حتى تنعكس في ملف القواعد المناسب.
متى حفظ الروابط ليس هو الحل؟
- اذا كان الخطأ داخل
wp-adminفقط؛ روابط الواجهة لا تتحكم عادة بمسارات لوحة التحكم. - اذا كانت صفحة واحدة محذوفة او حالتها مسودة بينما بقية الروابط تعمل.
- اذا كانت الاستجابة 403 من جدار حماية، او 500 بسبب PHP.
- اذا كان الرابط يتحول الى نطاق قديم؛ هذه مشكلة عناوين او استبدال بيانات وليست قاعدة 404 فقط.
- اذا كان خادم الويب لا يمرر الروابط الجميلة الى ووردبريس من الاساس.
الخلاصة من التجربة
تعطيل قواعد ووردبريس جعل رابط مقال موجود يعطي 404، واعادة توليدها أعادته الى 200. لذلك حفظ الروابط الدائمة خطوة اولى منطقية بعد النقل. اذا بقي الخطأ، شكل صفحة 404 واختبار الرابط الرقمي يساعدانك تعرف هل تكمل داخل ووردبريس او تنتقل الى اعداد Apache او Nginx او IIS.
اخترنا هذا الاختبار بعد تكرار الحالة في مجتمعات ووردبريس، ومنها مناقشة حديثة لموقع انتقل الى خادم جديد وكانت الروابط الجميلة تعطي Apache 404. انتهت تلك الحالة عند تصحيح اعداد اعادة الكتابة في الخادم، وهذا يبين ليش ما بنكتفي بنصيحة “احفظ الروابط” بدون تحديد الطبقة المعطلة.