معالجة ملفات الويب الثابتة في webman

يدعم webman الوصول إلى الملفات الثابتة، حيث يتم وضع جميع الملفات الثابتة في دليل public، على سبيل المثال، الوصول إلى http://127.0.0.8787/upload/avatar.png هو في الواقع الوصول إلى {دليل المشروع الرئيسي}/public/upload/avatar.png.

ملاحظة
الملفات الثابتة التي تبدأ بـ /app/xx/اسم الملف تعني في الواقع الوصول إلى دليل public الخاص بإضافات التطبيقات، مما يعني أنه لا يدعم الوصول إلى الدليل {دليل المشروع الرئيسي}/public/app/.
لمزيد من التفاصيل، يرجى الرجوع إلى إضافات التطبيقات

إيقاف دعم الملفات الثابتة

إذا لم يكن هناك حاجة لدعم الملفات الثابتة، افتح config/static.php وغيّر خيار enable إلى false. بعد إيقاف التشغيل، ستتلقى جميع الوصولات إلى الملفات الثابتة رد 404.

تغيير دليل الملفات الثابتة

يستخدم webman بشكل افتراضي دليل public كدليل للملفات الثابتة. إذا كنت بحاجة إلى تغييره، يرجى تعديل دالة المساعد public_path() في support/helpers.php.

وسيط الملفات الثابتة

يأتي webman مزودًا بوسيط للملفات الثابتة، موقعه هو app/middleware/StaticFile.php.
في بعض الأحيان نحتاج إلى إجراء بعض المعالجات على الملفات الثابتة، مثل إضافة رؤوس http للتفاعل عبر المواقع، ومنع الوصول إلى الملفات التي تبدأ بنقطة (.)، يمكن استخدام هذا الوسيط لذلك.

محتوى app/middleware/StaticFile.php مشابه لما يلي:

<?php
namespace support\middleware;

use Webman\MiddlewareInterface;
use Webman\Http\Response;
use Webman\Http\Request;

class StaticFile implements MiddlewareInterface
{
    public function process(Request $request, callable $next) : Response
    {
        // منع الوصول إلى الملفات المخفية التي تبدأ بـ.
        if (strpos($request->path(), '/.') !== false) {
            return response('<h1>403 forbidden</h1>', 403);
        }
        /** @var Response $response */
        $response = $next($request);
        // إضافة رؤوس http للتفاعل عبر المواقع
        /*$response->withHeaders([
            'Access-Control-Allow-Origin'      => '*',
            'Access-Control-Allow-Credentials' => 'true',
        ]);*/
        return $response;
    }
}

إذا كنت بحاجة إلى هذا الوسيط، يجب عليك تفعيله في خيار middleware ضمن config/static.php.