webman – Traitement des fichiers statiques

webman prend en charge l'accès aux fichiers statiques, qui sont tous situés dans le répertoire public. Par exemple, lors de l'accès à http://127.0.0.8787/upload/avatar.png, il s'agit en réalité de l'accès à {répertoire principal du projet}/public/upload/avatar.png.

Remarque
L'accès aux fichiers statiques commençant par /app/xx/nom_du_fichier correspond en réalité à l'accès au répertoire public du plugin d'application. En d'autres termes, l'accès au répertoire {répertoire principal du projet}/public/app/ et à ses sous-répertoires n'est pas pris en charge.
Pour plus d'informations, veuillez consulter le document sur les plugins d'application.

Désactiver la prise en charge des fichiers statiques

Si la prise en charge des fichiers statiques n'est pas nécessaire, ouvrez le fichier config/static.php et passez l'option enable à false. Une fois la prise en charge désactivée, l'accès à tous les fichiers statiques renverra un code 404.

Changer le répertoire des fichiers statiques

Par défaut, webman utilise le répertoire public comme répertoire des fichiers statiques. Pour le modifier, éditez la fonction d'assistance public_path() dans le fichier support/helpers.php.

Middleware pour les fichiers statiques

webman inclut par défaut un middleware pour les fichiers statiques, situé dans app/middleware/StaticFile.php.
Parfois, nous devons effectuer des traitements sur les fichiers statiques, par exemple ajouter des en-têtes HTTP CORS ou interdire l'accès aux fichiers commençant par un point (.). Ce middleware peut être utilisé pour cela.

Le contenu de app/middleware/StaticFile.php est similaire à ce qui suit :

<?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
    {
        // Interdire l'accès aux fichiers masqués commençant par un point
        if (strpos($request->path(), '/.') !== false) {
            return response('<h1>403 forbidden</h1>', 403);
        }
        /** @var Response $response */
        $response = $next($request);
        // Ajouter des en-têtes HTTP CORS
        /*$response->withHeaders([
            'Access-Control-Allow-Origin'      => '*',
            'Access-Control-Allow-Credentials' => 'true',
        ]);*/
        return $response;
    }
}

Si ce middleware est nécessaire, il doit être activé dans l'option middleware du fichier config/static.php.