이 유형의 URL이 있습니다.
http://www.example.com/?param1=val1¶m2=¶m3=val3¶m4=val4¶m5=val5
그리고 이것을 이것을 다음으로 리디렉션하고 싶습니다 :
http://www.example.com/newparam/val3/val4
그래서 나는이 재 작성 규칙을 성공하지 않고 시도했습니다.
rewrite "/?param1=val1¶m2=¶m3=(.+)¶m4=(.+)¶m5=(.+)" http://www.example.com/newparam/$1/$2 redirect;
nginx는 쿼리 매개 변수를 처리 할 수 없습니까?
편집 : 모든 청원을 다시 작성하고 싶지 않습니다. 다른 URL에는 영향을주지 않고 해당 URL 만 다시 작성하면됩니다.
답변
좋아, rzab의 초기 도움 덕분 에이 작업 솔루션에 대한 그의 규칙을 재정의했습니다.
location / {
if ($args ~* "/?param1=val1¶m2=¶m3=[0-9]+¶m4=.+¶m5=[0-9]+") {
rewrite ^ http://www.example.com/newparam/$arg_param3/$arg_param4? last;
}
}
무한 재귀를 피하기 위해 조건을 추가하고? 규칙의 끝에 초기 매개 변수를 제거하십시오 . 그것은 완벽하게 작동합니다 🙂
답변
위치 = / { 다시 쓰기 ^ http://www.example.com/newparam/$arg_param3/$arg_param4; }