Nginx에서 3개의 URL 세그먼트 뒤의 접미사 제거 리디렉션

Nginx에서 3개의 URL 세그먼트 뒤의 접미사 제거 리디렉션

마지막 세그먼트를 제거하는 데 필요한 URL입니다.(?order=asc)

https://www.example.com/segment_1/segment_2/page/the_number_goes_here/?order?asc

이것은 내가 시도하는 코드입니다.

location ~ ^/([^/]+)/([^/]+)/page/(\d+)/ {
    try_files $uri $uri/ /index.php?$args;
    # Capture the 2 segments and page number
    set $segment_1 $1;
    set $segment_2 $2;
    set $page_number $4;
    # Redirect without the sufix
    rewrite ^ /$segment_1/$segment_2/page/$page_number/ permanent;
}

답변1

그리고locationrewrite 지시문은 다음을 처리합니다정규화된 URI여기에는 쿼리 문자열("마지막 세그먼트"라고 함)이 포함되지 않습니다.

쿼리 문자열은 $args변수에서 사용할 수 있습니다.

그만큼rewrite지령?선택적으로 대체 값 끝에 a를 추가하여 원래 쿼리 문자열을 제거할 수 있습니다 .

예를 들어:

rewrite ^ /$segment_1/$segment_2/page/$page_number/? permanent;

또한 예제 코드에서 다음을 수행하십시오.

  • 페이지 번호 $3는 에 캡처되어 있습니다.$4
  • Nginx는 항상 and 지시어를 먼저 try_files평가하므로 이 명령문은 중복될 수 있습니다 .setrewrite

먼저 평가됩니다

관련 정보