ngix conf 파일에서 $ uri 변수의 일부로 위치 블록을 포함하는 것 외에는 제대로 작동하는 다시 쓰기가 있습니다. 위치 블록 다음의 경로 만 원합니다. 현재 설정 코드는 다음과 같습니다
location /cargo {
try_files $uri $uri/ /cargo/index.php?_REWRITE_COMMAND=$uri&args;
}
http://localhost/cargo/testpage
리디렉션 URL 예제를 사용하면 PHP 파일에서 수신 한 “_REWRITE_COMMAND”매개 변수의 값은 “/ cargo / testpage”입니다. 위치 블록을 제거하고 $ uri로 “testpage”를 갖습니다.
$ uri를 나누고 $ 1 $ 2 등을 사용하여 새 변수에 할당하는 정규식 구문이 있다고 확신하지만 재 작성의 일부가 아닌 정규 표현식을 사용하여 변수 할당을 수행하는 예제를 찾을 수 없습니다 성명서. 나는 몇 시간 동안 찾고 노력했지만이 마지막 단계를 지나칠 수없는 것 같습니다.
또한 응용 프로그램 코드 에서이 문제를 해결할 수는 있지만 nginx conf에서 수정하려고하는 이유는 Apache에서도 실행되므로 호환성 문제 때문입니다. 또한 실제로 해킹 방법을 알아 냈지만 파일 존재 여부를 확인하기위한 “if”문이 포함되어 있으며 설명서에서 구체적 으로 그렇게하지 말라고 합니다.
답변
주위를 둘러 보면 캡처와 함께 정규 표현식 위치를 사용하는 것이 가장 쉽다고 생각합니다. 당신의 모범을 채택하면 나는 다음과 같이 끝납니다.
location ~ ^/cargo(.*) {
try_files $1 $1/ /cargo/index.php?_REWRITE_COMMAND=$1&args;
}
답변
나는 나를 위해 일한 다른 것을 발견했다. (Gunicorn을 사용하고 있으므로 전달할 항목을 선택할 수 없음)
당신은 도망 갈 수 있어야합니다
location /cargo {
rewrite ^/cargo(.*)$ $1 break;
try_files $uri $uri/ /cargo/index.php?_REWRITE_COMMAND=$uri&args;
}
답변
Node JS로 마이크로 서비스 또는 API에 추가하기 위해 고군분투하는 사람들을 위해 다음을 사용하여 api
서버의 URL에서 제거 했습니다.
location ^~ /api {
rewrite ^/api(/.*)$ $1 break;
proxy_pass http://127.0.0.1:3001/;
}