webman 정적 파일 처리

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

주의
/app/xx/파일명으로 시작하는 정적 파일 접근은 실제로 애플리케이션 플러그인의 public 디렉토리에 접근하는 것이므로, {주 프로젝트 디렉토리}/public/app/ 하위 디렉토리에 대한 접근은 지원하지 않습니다.
더 많은 내용은 애플리케이션 플러그인을 참조하세요.

정적 파일 지원 끄기

정적 파일 지원이 필요하지 않은 경우, config/static.php에서 enable 옵션을 false로 변경하십시오. 끄면 모든 정적 파일의 접근이 404를 반환합니다.

정적 파일 디렉토리 변경

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

정적 파일 미들웨어

webman은 기본적으로 정적 파일 미들웨어를 제공합니다. 위치는 app/middleware/StaticFile.php입니다.
가끔 정적 파일에 대해 일부 처리가 필요할 수 있습니다. 예를 들어, 정적 파일에 크로스 도메인 HTTP 헤더를 추가하거나, 점(.)으로 시작하는 파일 접근을 금지하는 등의 작업을 이 미들웨어를 사용하여 수행할 수 있습니다.

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);
        // 크로스 도메인 HTTP 헤더 추가
        /*$response->withHeaders([
            'Access-Control-Allow-Origin'      => '*',
            'Access-Control-Allow-Credentials' => 'true',
        ]);*/
        return $response;
    }
}

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