요청을 특정 하위 디렉토리, 다른 루트 위치로 전환하고 싶습니다. 어떻게? 내 기존 블록은 다음과 같습니다
server {
listen 80;
server_name www.domain.com;
location / {
root /home/me/Documents/site1;
index index.html;
}
location /petproject {
root /home/me/pet-Project/website;
index index.html;
rewrite ^/petproject(.*)$ /$1;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
} }
즉, http://www.domain.com 은 /home/me/Documents/site1/index.html을 제공해야하지만 http://www.domain.com/petproject 는 / home / me / pet-Project / website를 제공해야합니다. /index.html-교체 후 nginx가 모든 규칙을 다시 실행하는 것으로 보이며 http://www.domain.com/petproject 는 /home/me/Documents/site1/index.html을 제공합니다.
답변
구성에는 일반적으로 nginx에서 발생하는 일반적인 문제가 있습니다. 즉, 블록 root
내부에서 지시문을 사용 합니다 location
.
현재 location
블록 대신이 구성을 사용해보십시오 .
root /home/me/Documents/site1;
index index.html;
location /petproject {
alias /home/me/pet-Project/website;
}
즉 /home/me/Documents/site1
, 웹 사이트의 기본 디렉토리는 입니다. /petproject
URI의 경우 컨텐츠가 /home/me/pet-Project/website
디렉토리 에서 제공됩니다 .
답변
break
재 작성 규칙에 플래그를 추가 해야 처리가 중지되고 위치 블록 내부에 있으므로 해당 블록 내부에서 처리가 계속됩니다.
rewrite ^/petproject/?(.*)$ /$1 break;
참고 /?
URL의 시작 부분에 이중 슬래시가 생기지 않도록 일치 패턴을 추가 했습니다.