특정 URL에 대한 Nginx 리디렉션

특정 URL에 대한 Nginx 리디렉션

nginx의 사이트 서버 블록에는 다음과 같은 위치 지시문이 있습니다.

location ~* ^.+\.(ico|css|js|eot|woff|otf|svg|gif|jpe?g|png|swg|woff2)(\?[a-z0-9=_]+)?$

location /applications/

location /

location ~ \.php$

리디렉션하고 싶은 이전 포럼 소프트웨어의 특정 URL이 있습니다. URL은 다음과 같습니다.

https://www.example.com/forums/forumdisplay.php?f=105

지금까지 내가 시도한 어떤 것도 이 URL과 일치하지 않는 것 같습니다. / 위치에서 몇 가지 다른 재작성 문을 시도했으며 가장 긴 일치 항목이 승리해야 한다고 생각하여 정확한 일치도 시도했습니다.

location = /forums/forumdisplay.php?f=105 {
    return 301 https://newurl;
}

이것은 작동하지 않습니다. 이 URL에서 여전히 404가 표시됩니다. 이 리디렉션을 어디서/어떻게 해야 합니까?

답변1

한 가지 접근 방식은 다음을 사용하는 것입니다.

location = /forums/forumdisplay.php {
    if ($arg_f = 105) {
        return 301 https://newurl;
    }
    fastcgi_pass /path/to/php.sock; # Send the request to PHP processor
}

/forums/forumdisplay.php이 접근 방식은 쿼리 인수가 105로 설정된 URL 과 일치하며 f추가 쿼리 인수가 있을 수 있습니다.

주석의 예에서는 전체 URL과 정확히 일치해야 하며 URL이 다음과 같은 경우에는 작동하지 않습니다.

http://example.com/forums/forumdisplay.php?f=105&fbclid=4567

관련 정보