nginx를 사용하여 경로를 리디렉션하고 동시에 경로의 일부를 삭제하는 방법

nginx를 사용하여 경로를 리디렉션하고 동시에 경로의 일부를 삭제하는 방법

CentOS Linux에서 nginx 1.8.1을 사용하여 다음을 시도했습니다.

  • server_name server1.olddomain.com;에서 로 트래픽 리디렉션server2.newdomain.com
  • 이 작업을 수행할 때 sites경로에서 제거하십시오.

예를 들어 nginx.conf.

server {
   ...
   server_name server1.olddomain.com;
   ...
   location /sites/ITDept {
        rewrite ^(.*) https://server2.newdomain.com/ITDept;
}

이는 위의 정확한 규칙에 따라 의도된 대로 작동하지만 다른 것은 작동하지 않습니다.

https://server1.olddomain.com/sites/ITDept/subfolder/subfolder필요에 따라 리디렉션하지 않습니다 https://server2.newdomain.com/ITDept/subfolder/subfolder. 로 리디렉션됩니다 https://server2.newdomain.com/sites/ITDept/subfolder/subfolder.

나는 성공하지 못한 채 올바른 구문을 알아내려고 몇 시간을 보냈습니다. 누군가가 도울 수 있기를 바랍니다. 미리 감사드립니다.

답변1

방금 알아 냈을 수도 있습니다. 다시 쓰기 규칙을 다음과 같이 수정합니다.

rewrite ^/sites/(.*)$ https://server2.newdomain.com/$1 last;

이렇게 하면 가능할 것 같습니다. 누군가 더 나은 선택을 하지 않는 한. 이것이 작동하는지 확인하기 위해 여전히 많은 링크를 테스트하고 있지만 지금까지는 매우 좋습니다. 이 기사에 감사드립니다.HttpRewriteModule을 사용하여 Nginx에서 URL의 일부를 빠르고 쉽게 제거하는 방법은 무엇입니까?

답변2

로 시작하지 않는 URI로 무엇을 하고 싶은지 확실하지 않지만 필요한 /sites것은 간단한 rewrite것이어야 합니다.

server {
    server_name server1.olddomain.com;
    rewrite ^/sites(.*)$ https://server2.newdomain.com$1 permanent;
    return 404;
}

바라보다이 파일더 알아보기.

관련 정보