حل مشكلة روابط ووردبريس مع NGINX وNext.js في الدليل الفرعي
إعداد بيئة تتضمن كل من NGINX وNext.js وWordPress يمكن أن يكون تحدياً، خاصة عندما يتعلق الأمر بتخصيص إعدادات الروابط الثابتة (Permalinks) بشكل صحيح. في هذا المقال، سنتناول مشكلة عدم عمل الروابط الثابتة ذات "اسم المقالة" في موقع WordPress الموجود في الدليل الفرعي /resources
وكيف يمكن تكوين NGINX بالشكل الذي يسمح بتشغيل كلا النظامين معاً بسلاسة.
التحديات مع NGINX وWordPress
عند إعداد الخادم، وضع Next.js في المسار الجذري وWordPress في الدليل الفرعي /resources
، قد تلاحظ أن الروابط الثابتة في WordPress لا تعمل كما هو متوقع عندما يتم ضبطها على "اسم المقالة". في البداية، كانت الروابط الثابتة تعمل عند ضبطها على "عادي"، ولكن عند التغيير إلى "اسم المقالة"، بدلاً من توجيه الطلبات بشكل صحيح إلى WordPress، يتم إعادة توجيهها إلى تطبيق Next.js، مما يؤدي إلى حدوث خطأ 500.
تعديل إعدادات NGINX لحل المشكلة
لإصلاح هذه المشكلة، تم تحديث إعدادات NGINX الخاصة بـ WordPress لتبدو كالتالي:
location /resources {
client_max_body_size 10M;
alias /var/www/html/wordpress;
index index.php index.html;
try_files $uri $uri/ /index.php$is_args$args;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
لكن بعد القيام بهذا التعديل، ظهرت مشكلة جديدة وهي أن الرابط https://example.app/resources/sample-post/
يعيد رسالة خطأ "غير موجود" (file not found)، ولا تعمل أي رابط ثابت في WordPress.
المتطلبات لحل المشكلة
لضمان عمل الروابط الثابتة "اسم المقالة" بشكل صحيح، يجب التأكد من توجيه كل الطلبات الخاصة بالمقالات إلى ملف index.php
في مجلد WordPress. يجب أن يسمح تكوين NGINX بأن تُعالج طلبات الـ PHP من خلال FastCGI، مع التأكد من أن NGINX يقوم بسحب الملفات الصحيحة من الدليل المحدد.
كيفية تكوين NGINX بالشكل المناسب
من المهم أيضاً مصادقة توجيه طلبات الروابط بين Next.js وWordPress. يمكن أن يتم ذلك عبر إعداد try_files
بشكل صحيح، بحيث يتأكد NGINX من ضرورة البحث عن ملفات WordPress أولاً. على سبيل المثال، يمكن أن يتضمن هذا التعليمات البرمجية:
try_files $uri $uri/ /resources/index.php?$args;
هذا الإعداد يساعد في توجيه كل الطلبات غير المعروفة إلى الملف الرئيسي لـ WordPress.
حيثيات ينبغي أخذها بعين الاعتبار
عند العمل مع بيئات تحتوي على مزيج من أنظمة التشغيل والتطبيقات، من الضروري الإبلاغ عن أي قيود أو مشاكل قد تؤثر على الأداء. يفضل الحصول على ثقة شاملة في تكوين الخادم عن طريق التجربة والتحقق المستمر من الأداء.
في الختام، إدارة إعدادات NGINX مع Next.js وWordPress في الدليل الفرعي /resources
قد تتطلب بعض التعديلات الدقيقة للتأكد من أن كل نظام يعمل بكفاءة. يجب أن يكون التركيز على توجيه الطلبات بشكل صحيح وتحديث إعدادات الروابط الثابتة، لتوفير تجربة مستخدم سلسة.
إذًا، باستخدام التكامل بين NGINX وNext.js وWordPress، يمكن تحقيق بيئة تعمل بسلاسة وتعطي النتائج المرجوة.