nginx 301 리디렉션이 예상대로 작동하지 않습니다.

nginx 301 리디렉션이 예상대로 작동하지 않습니다.

nginx.conf 파일에 다음 규칙을 추가했습니다.

rewrite ^/top100/Armin%20van%20Buuren/(.*)$ http://www.example.com/armin-van-buuren/$1 redirect;
rewrite ^/top100/armin-van-buuren/(.*)$ http://www.example.com/armin-van-buuren/$1 redirect;
rewrite ^/top100/(.*)$ http://www.example.com/$1 redirect;

첫 번째 규칙의 경우 www.example.com/top100/Armin%20van%20Buuren/다음 으로 리디렉션됩니다.www.example.com/Armin%20van%20Buuren/

다른 2가지 규칙은 정상적으로 작동합니다. 내가 여기서 무엇을 엉망으로 만들었습니까?

답변1

Nginx는 내부적으로 정규화된 URI를 사용합니다.

일치는 "%XX" 형식으로 인코딩된 텍스트를 디코딩한 후 정규화된 URI에 대해 수행되어 상대 경로 구성 요소 "."에 대한 참조를 확인합니다. 및 ".." 및 두 개 이상의 인접한 슬래시를 단일 슬래시로 압축할 수 있습니다.

공백을 문자열로 묶으려면 (작은따옴표 또는 큰따옴표)를 사용하세요.

그래서 그것은 다음과 같습니다 :

rewrite "^/top100/Armin van Buuren/(.*)$" /armin-van-buuren/$1 redirect;

관련 정보