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