webman gestione dei file statici
webman supporta l'accesso ai file statici, che devono essere posizionati nella directory public
. Ad esempio, l'accesso a http://127.0.0.8787/upload/avatar.png
corrisponde in realtà all'accesso a {cartella principale del progetto}/public/upload/avatar.png
.
Attenzione
L'accesso ai file statici che iniziano con/app/xx/nomefile
corrisponde in realtà all'accesso alla directorypublic
del plugin dell'applicazione, il che significa che non è supportato l'accesso alla directory{cartella principale del progetto}/public/app/
.
Per ulteriori informazioni, fare riferimento a plugin dell'applicazione.
Disabilitare il supporto per i file statici
Se non è necessario il supporto per i file statici, aprire config/static.php
e impostare l'opzione enable
su false. Una volta disabilitato, tutte le richieste ai file statici restituiranno un errore 404.
Cambiare la directory dei file statici
webman utilizza per impostazione predefinita la directory pubblica come directory dei file statici. Se si desidera modificarla, è possibile cambiare la funzione helper public_path()
all'interno di support/helpers.php
.
Middleware per i file statici
webman include un middleware per i file statici, situato in app/middleware/StaticFile.php
. A volte è necessario effettuare alcune operazioni sui file statici, ad esempio aggiungere intestazioni http per il cross-origin o vietare l'accesso ai file che iniziano con un punto (.
). Questo middleware può essere utilizzato per tali scopi.
Il contenuto di app/middleware/StaticFile.php
è simile al seguente:
<?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
{
// Vietare l'accesso ai file nascosti che iniziano con un punto
if (strpos($request->path(), '/.') !== false) {
return response('<h1>403 forbidden</h1>', 403);
}
/** @var Response $response */
$response = $next($request);
// Aggiungere intestazioni http per il cross-origin
/*$response->withHeaders([
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Credentials' => 'true',
]);*/
return $response;
}
}
Se si desidera utilizzare questo middleware, è necessario abilitarlo nell'opzione middleware
all'interno di config/static.php
.