لقد واجهنا مؤخرًا مشكلة جديدة يمكن وصفها على النحو الأفضل بأنها “خطأ الخادم 405”. عند التحقيق ، اكتشفنا أن خادم Nginx لا يقبل طريقة الطلب المسماة “خيارات”.

أردنا اليوم أن نوضح لك كيف تعاملنا بسرعة مع هذه المشكلة عن طريق تعديل تكوين خادم Nginx.

تحتاج إلى معرفة أن 405 استجابة ليست 404 (غير موجودة). في حالة 405 يتوفر الملف الذي تحاول الوصول إليه على الخادم ولكن الخادم لا يسمح لك بالوصول إليه باستخدام طريقة خيارات.

لحل هذه المشكلة ، قمنا بتعديل تكوين Nginx الخاص بنا والذي يمكن العثور عليه عادة في /etc/nginx/nginx.conf أو على مستوى تكوين الموقع ، في حالتنا /etc/nginx/conf.d/magento2.conf

نظرًا لأننا واجهنا مشكلات في الوصول إلى الملفات في المجلد ماجينتو 2 الثابت ، فقد قمنا بتعديل القسم التالي من ملف التكوين ماجينتو 2:

location /static/ {
    # Uncomment the following line in production mode
    expires max;
    # Remove signature of the static files that is used to overcome the browser cache
    location ~ ^/static/version {
        rewrite ^/static/(version\d*/)?(.*)$ /static/$2 last;
    }
    location ~* \.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2)$ {
        add_header Cache-Control "public";
        add_header X-Frame-Options "SAMEORIGIN";
        expires off;
        if (!-f $request_filename) {
            rewrite ^/static/?(.*)$ /static.php?resource=$1 last;
        }
    }
    location ~* \.(zip|gz|gzip|bz2|csv|xml)$ {
        add_header Cache-Control "no-store";
        add_header X-Frame-Options "SAMEORIGIN";
        expires    off;
        if (!-f $request_filename) {
           rewrite ^/static/?(.*)$ /static.php?resource=$1 last;
        }
    }
    if (!-f $request_filename) {
        rewrite ^/static/?(.*)$ /static.php?resource=$1 last;
    }
    add_header X-Frame-Options "SAMEORIGIN";
}

اعتمادًا على تكوين ماجينتو 2 ، يجب أن ترى شيئًا مشابهًا والشيء الوحيد الذي عليك فعله الآن هو وضع الكود التالي داخل مجموعة “الموقع”

if ($request_method = OPTIONS ) {
        add_header Content-Length 0;
        add_header Content-Type text/plain;
        return 200;
}

بعد حفظ التغييرات ، تحتاج إلى إعادة تحميل Nginx أو ببساطة إعادة تشغيله ويجب أن يقبل خادمك الآن طلبات خيارات للملفات الثابتة. يوجه السطر أعلاه Nginx إلى أنه في حالة طلب خيارات ، يجب إضافة رؤوس خاصة لإرشاد المتصفح بأن المحتوى متاح ولا يتطلب ترميزًا خاصًا ثم إرجاع 200 رمز للتأكيد على أن كل شيء على ما يرام ويمكننا معالجته.

هل كان لديك مشاكل مماثلة في الماضي؟ كيف تعاملت معهم؟ يرجى المشاركة في التعليقات ، سنكون أكثر من سعداء أن نسمع!

Open chat
Powered by