أداة فحص سلاسل التوجيه والتنقل

النتيجة الناجحة لأمر nginx -t ≠ إمكانية فتح الموقع. عنوان الخلفية الخاص بنا /admin سيئ على المدى الطويل: إعادة توجيه 301 إلى /admin/، بينما هذه دليلة حقيقية ولا تحتوي على ملف صفحة رئيسية، فيعرض المتصفح صفحة بيضاء مع خطأ 403 — تكون فحوصات الصيغة خضراء بالكامل، لكن السجلات مليئة برسالة "directory index is forbidden". يوفّر لك هذا الأداة نصًّا برمجيًّا لـ curl يقوم بطباعة رموز الحالة خطوةً بخطوة، بالإضافة إلى أجزاء إصلاح nginx المقابلة لكل عطل.

مجاني · بدون تسجيل دخول توليد محلي · المحتوى غير مُرفَّع الحادث المقابل · عنوان الخلفية 301→403 شاشة بيضاء

1الموقع والمسار

يُوصى بكتابة العلامات بشكل أزواج: /x و/x/ يجب اختبار كليهما، حيث يختلف السلوك غالبًا بينهما.

2خيارات إصلاح nginx

النتيجةنظرة عامة على الفحص

المخرجاتنص برمجي لفحص سلسلة إعادة التوجيه باستخدام curl

0 سطر
—
يمكن تشغيل الخادم أو الجهاز المحلي:bash route-check.sh. ويتم طباعة رمز الحالة وقيمة Location لكل قفزة.

المخرجاتأجزاء إصلاح nginx

0 سطر
—

مرجع سريععند رؤية هذه الحالة، تحقق أولًا من هذه الأماكن

الظاهرةالأسباب الجذرية الأكثر شيوعًاكيفية التأكيد
301 → مع شرطة مائلة → 403اسم المسار هو دليل حقيقي،try_files $uri $uri/ يُفعّل إعادة التوجيه للدليل، ولا يوجد ملف index داخل الدليل.ls /var/www/الموقع/الدليل_المطلوب تحقق مما إذا كان هناك ملف index.html
عدد كبير جدًا من عمليات إعادة التوجيهتداخل إعادة التوجيه 301 الخاصة بمواقع location الدقيقة مع إعادة التوجيه الداخلية try_filesتحقق في النص البرمجي مما إذا كانت قيمة Location تعود إلى العنوان السابق.
عنوان URL نظيف يؤدي إلى خطأ 404، بينما يعمل الملف مع الامتداد .html بشكل طبيعي.قلل من استخدام try_files $uri.htmlإضافة try_files $uri $uri.html $uri/ =404;
تمت إعادة توجيه الملف .html عبر 301 إلى عنوان URL نظيف خاطئ.مستخدم في location if إجراء تحقق باستخدام التعبيرات النمطية، تم التغطية عليه $1 مجموعة الالتقاطانقل شرط if خارج هذا الموقع (location)، أو استخدم map بدلًا منه
مسار بادئة معين لم يتبع موضع location المتوقع.موقع regex يسبق ^~ الوصول قبل البادئة (^~ سيُهمِش الموقع العادي، لكن البادئة العادية لن تفعل ذلك)nginx -T | grep -n location انظر الترتيب والنوع
403 وتسجّل السجلات "forbidden by rule".قواعد deny أو أذونات الملفاتانظر إلى السطر المحدد في سجل الخطأ (error log)، ولا تخمّن.
لقد وقعنا في هذه الفخاخ من قبل

1 · عنوان الخلفية يظل دائمًا 403./admin أُعيد توجيهه عبر 301 إلى /admin/، بينما /admin/ هو دليل حقيقي (يحتوي على data/) ولا يحتوي ملف index → خطأ 403 مع شاشة بيضاء. فقط /admin.html يمكنك الدخول.

2 · التعديل هو إعادة كتابة داخلية، وليس إضافة index.rewrite ^/admin/?$ /admin.html last; اجعل كلًّا من /admin و/admin/ يُوجِّه مباشرةً إلى الملف، مع بقاء طبقة حماية تسجيل الدخول دون تغيير.

3 · لا يمكن لفحص بنية الجملة اكتشاف هذه المشكلة.nginx -t يتحقق هذا الأداة من الصياغة فقط؛ أما الأخطاء المنطقية مثل سلاسل إعادة التوجيه أو فهرسة الدليل فهي تظهر باللون الأخضر كأنها صحيحة. بعد التعديل، يجب إرسال طلب فعلي للتحقق من رمز الحالة وعدد عمليات التحويل.

٤ · الاختبار الزوجي./x و /x/ هما عنوانا URI مختلفان، وقد تختلف القواعد المُطبَّقة عليهما؛ ويجب أن يُرجع كلاهما رمز الحالة 200.