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 directory public 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.