2016-09-15 1 views
0

nginx에서 index.html과 같은 페이지가 서브 디렉토리 나 웹 루트에 있습니다. http : 127.0.0.1/path/to/index.html패스를 디렉토리 구분자로 처리하지 않고 nginx를 통과합니다.

확실하지 않은 이유로, 때때로 슬래시를 사용하여 매개 변수를 추가하여 nginx에서 무시할 수 있습니다 (자바 스크립트에서 읽음). 페이지 자체). 그래서 내가 원하는

HTTP : 127.0.0.1/path/to/index.html/@foo 바 = X

,하지만, URL을 다시 작성하지 않고 동일한 index.html을 페이지를 반환 할 (있도록 예를 들어 javascript 함수 window.location.pathname은 index.html/@foo?bar=x 문자열을 반환합니다.

나는 그것이 nginx에 익숙하지 않다. 그래서 사소한 질문이라면 사과하되, nginx가 @foo이라는 서브 디렉토리를 찾지 않도록 어떻게 설정해야합니까? 하지만 index.html이 이라는 디렉토리 내에있는 to 디렉토리에 있다는 것을 여전히 알고 있습니다.

답변

1

URI의 부분이 .html/으로 끝나는 부분을 식별하여 내부적으로 다시 쓰는 것이 한 방법입니다. 예 :

location/{ 
    try_files $uri $uri/ @rewrite; 
} 
location @rewrite { 
    rewrite ^(/.+?\.html)/ $1 last; 
    return 404; 
} 

JavaScript가 표시하는 URI에 영향을주지 않아야합니다.

자세한 내용은 this document을 참조하십시오.

+0

감사합니다. 나는 파일들이 존재했는지 여부를 테스트 할 필요가 없었기 때문에'location ~ */(\ w + /)? my/special/dir/[^ /] +/{rewrite^(. * my/특별/dir/[^ /] +)/$ 1 마지막; return 404}'그리고 당신이 말했듯이 JS가 본 URI는 변경되지 않았습니다. – user2667066

관련 문제