nginx 다시 쓰기를 사용하는“숨기기”.html 파일 확장자 대해 위치 블록이 필요하기

nginx를 통해 정적 사이트를 제공하고 있으며 내 목표는 다음과 같은 URL을 바꾸는 것입니다.

http://foo.com/bar.html

http://foo.com/bar

핵심은 슬래시가 없습니다. 현재 위치 별칭을 사용하여 비슷한 작업을 수행하고 있지만 모든 파일에 대해 위치 블록이 필요하기 때문에 지루합니다 .nginx는 별칭을 디렉토리로 간주하므로 후행 슬래시를 추가합니다.

    location / {
        root    /srv/www/foo/public_html;
        index   index.html;
    }

    location /bar1 {
        alias /srv/www/foo/public_html/;
        index bar1.html;
    }

    location /bar2 {
        alias /srv/www/foo/public_html/;
        index bar2.html;
    }

등등. 나는 다시 쓰기에 대한 문서를 읽었으며, 내가해야 할 일에 대해 말한 것을 합성 할 수없는 것 같습니다. 나는 아파치 배경에서 나오지 않는다. nginx는 웹 서버에 대한 첫 번째 길이므로 HTTP 배경이 약하기 때문에 분명한 것이 빠져 있다고 확신합니다. 제공 할 수있는 도움에 대해 미리 감사드립니다.



답변

try_files 당신이 원하는 것이어야합니다.

이 같은:

try_files $uri.html $uri $uri/ =404;

답변

@Khaja의 의견에 따르면 가장 좋은 대답은 다음과 같습니다.

try_files $uri.html $uri/ =404;

따라서 하나의 리소스 사본 만 제공됩니다 (.html 확장자가없는 것). 중복 콘텐츠를 제공하는 여러 URL로 링크 강도를 나누고 싶지 않습니다. 여기 에서 설명서를 찾으 십시오 .