, 전에, 당신의 server
블록 내부에이를 추가 한 다른 location
또는 if
:
if ($query_string ~ ^([^?]+)\?\1$) {
set $clean $1;
rewrite . $uri?$clean?;
}
약간 애매한 행동보다 더 있기 때문에 그것은, 제대로하는 것은 매우 까다로운 :
- 가
$query_string
은 초기 값이없는 쿼리 문자열입니다. ?
- 정규 표현식의
\1
은 두 번째 복사본과 일치합니다. 후자는 원래의 쿼리 문자열의 복사본을 포함하고 있기 때문에 전자 첫 번째 그룹 (...)
- 당신은, 재 당신이 재 작성에
$uri
하지 $request_uri
를 사용할 필요가
- 을 덮어 쓰기 때문에 새로운 변수로
$1
을 저장해야
- 후행
?
을 다시 쓰기에 추가해야합니다. 그렇지 않으면 재 작성이 원래 쿼리 문자열의 복사본을 추가합니다!
합니다 (redirect
플래그없이) rewrite
의 단순한 형태는 대부분의 응용 프로그램에 대한 충분해야한다 (즉, 이제까지, 아마 Nginx와 구문의 가장 모호한 비트의), 플러스 그것은에 대한 추가 왕복을 필요로하지 않습니다 브라우저.
당신을 위해 작동하지 않는 경우, 당신은 redirect
재 작성 플래그를 사용하여 브라우저 리디렉션을 발행, 최후의 수단으로 (예 : fastcgi_param QUERY_STRING
와 같은) 적절한 백엔드 지시에 $clean
쿼리 문자열을 사용하거나 시도 할 수 있습니다.