정적 파일 처리

webman은 정적 파일 액세스를 지원하며, 정적 파일은 모두 public 디렉토리에 위치합니다. 예를 들어 http://127.0.0.8787/upload/avatar.png에 액세스하는 것은 실제로 {프로젝트 기본 디렉토리}/public/upload/avatar.png에 액세스하는 것입니다.

주의
webman 1.4부터는 애플리케이션 플러그인을 지원합니다. /app/xx/파일명으로 시작하는 정적 파일 액세스는 실제로 애플리케이션 플러그인의 public 디렉토리에 액세스하는 것을 의미합니다. 즉, webman >=1.4.0일 때는 {프로젝트 기본 디렉토리}/public/app/하위 디렉토리 액세스를 지원하지 않습니다.
자세한 내용은 애플리케이션 플러그인을 참조하십시오.

정적 파일 지원 비활성화

정적 파일 지원이 필요하지 않은 경우 config/static.php를 열고 enable 옵션을 false로 변경하십시오. 비활성화된 후 모든 정적 파일 액세스는 404를 반환합니다.

정적 파일 디렉토리 변경

webman은 기본적으로 public 디렉토리를 정적 파일 디렉토리로 사용합니다. 변경이 필요한 경우 support/helpers.phppublic_path() 헬퍼 함수를 수정하십시오.

정적 파일 미들웨어

webman에는 기본적으로 정적 파일 미들웨어가 있으며, 위치는 app/middleware/StaticFile.php에 있습니다.
가끔 정적 파일에 대해 처리할 필요가 있는데, 이는 정적 파일에 크로스 도메인 헤더를 추가하거나, 점(.)으로 시작하는 파일 액세스를 거부하는 등의 작업이 필요한 경우에 사용됩니다.

app/middleware/StaticFile.php의 내용은 다음과 같습니다:

<?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
    {
        // 숨겨진 파일인 .으로 시작하는 파일 액세스 거부
        if (strpos($request->path(), '/.') !== false) {
            return response('<h1>403 forbidden</h1>', 403);
        }
        /** @var Response $response */
        $response = $next($request);
        // 크로스 도메인 헤더 추가
        /*$response->withHeaders([
            'Access-Control-Allow-Origin'      => '*',
            'Access-Control-Allow-Credentials' => 'true',
        ]);*/
        return $response;
    }
}

이 미들웨어가 필요한 경우에는 config/static.phpmiddleware 옵션을 활성화해야 합니다.