webman处理静态文件

webman suporta o acesso a arquivos estáticos, todos os arquivos estáticos são colocados no diretório public, por exemplo, acessar http://127.0.0.8787/upload/avatar.png na verdade está acessando {diretório do projeto principal}/public/upload/avatar.png.

Nota
O acesso a arquivos estáticos que começam com /app/xx/nome do arquivo na verdade está acessando o diretório public do plugin da aplicação, ou seja, não suporta o acesso a diretórios em {diretório do projeto principal}/public/app/.
Para mais informações, consulte Aplicações de plugin

Fechar suporte a arquivos estáticos

Se o suporte a arquivos estáticos não for necessário, abra config/static.php e mude a opção enable para false. Após desativar, todos os acessos a arquivos estáticos retornarão 404.

Alterar o diretório de arquivos estáticos

Por padrão, o webman utiliza o diretório public como o diretório de arquivos estáticos. Se precisar modificar, altere a função auxiliar public_path() no arquivo support/helpers.php.

Middleware para arquivos estáticos

O webman vem com um middleware de arquivos estáticos, localizado em app/middleware/StaticFile.php.
Às vezes, precisamos fazer algum processamento nos arquivos estáticos, como adicionar cabeçalhos http de CORS, proibir o acesso a arquivos que começam com ponto (.), isso pode ser feito usando este middleware.

O conteúdo de app/middleware/StaticFile.php é semelhante ao seguinte:

<?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
    {
        // Proibir acesso a arquivos ocultos que começam com .
        if (strpos($request->path(), '/.') !== false) {
            return response('<h1>403 forbidden</h1>', 403);
        }
        /** @var Response $response */
        $response = $next($request);
        // Adicionar cabeçalhos http de CORS
        /*$response->withHeaders([
            'Access-Control-Allow-Origin'      => '*',
            'Access-Control-Allow-Credentials' => 'true',
        ]);*/
        return $response;
    }
}

Se precisar deste middleware, é necessário habilitá-lo na opção middleware em config/static.php.