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
À partir de la version 1.4, webman prend en charge les plugins d'application. L'accès aux fichiers statiques commençant par/app/xx/nom_du_fichier
correspond en réalité à l'accès au répertoirepublic
du plugin d'application. Autrement dit, à partir de webman >=1.4.0, l'accès au répertoire{répertoire principal du projet}/public/app/
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, modifiez le fichier config/static.php
pour passer l'option enable
à false
. Une fois la prise en charge désactivée, l'accès à tous les fichiers statiques renverra un code 404.
Changement du répertoire des fichiers statiques
Par défaut, webman utilise le répertoire public comme répertoire des fichiers statiques. Si vous souhaitez le modifier, veuillez modifier 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 de type Cross-Origin Resource Sharing (CORS) ou interdire l'accès aux fichiers commençant par un point (.
). Cela peut être réalisé à l'aide de ce middleware.
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
.