webman处理静态文件
webman soporta el acceso a archivos estáticos, los archivos estáticos se colocan en el directorio public
, por ejemplo, acceder a http://127.0.0.8787/upload/avatar.png
en realidad está accediendo a {directorio principal}/public/upload/avatar.png
.
Nota
El acceso a archivos estáticos que comienzan con/app/xx/nombre_de_archivo
en realidad accede al directoriopublic
del complemento de la aplicación, es decir, no se admite el acceso a directorios bajo{directorio principal}/public/app/
.
Para más información, consulta complementos de la aplicación
Cerrar el soporte para archivos estáticos
Si no necesitas soporte para archivos estáticos, abre config/static.php
y cambia la opción enable
a false. Una vez desactivado, todos los accesos a archivos estáticos devolverán un 404.
Cambiar el directorio de archivos estáticos
webman usa por defecto el directorio public como directorio de archivos estáticos. Si necesitas modificarlo, cambia la función asistente public_path()
en support/helpers.php
.
Middleware de archivos estáticos
webman incluye un middleware de archivos estáticos, ubicado en app/middleware/StaticFile.php
. A veces necesitamos realizar algunas operaciones en los archivos estáticos, por ejemplo, agregar encabezados http de CORS o prohibir el acceso a archivos que comienzan con un punto (.
) utilizando este middleware.
El contenido de app/middleware/StaticFile.php
es similar al siguiente:
<?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
{
// Prohibir el acceso a archivos ocultos que comienzan con .
if (strpos($request->path(), '/.') !== false) {
return response('<h1>403 forbidden</h1>', 403);
}
/** @var Response $response */
$response = $next($request);
// Agregar encabezados http de CORS
/*$response->withHeaders([
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Credentials' => 'true',
]);*/
return $response;
}
}
Si necesitas este middleware, debes habilitarlo en la opción middleware
de config/static.php
.