2017-03-16 5 views
1

URL에 쓸모없는 인수 목록이 있습니다.특정 인수 목록에 대한 Nginx 리디렉션

arg1 
arg2 
arg3 
... 
argn 

링크의 쿼리 부분에있는 이러한 인수 중 하나를 갖는 요청을 특정 사이트로 리디렉션해야합니다.

/page.html?arg1=sxx&arg2=uuu -> http://xxx.x.xxx.x 
/page.php?arg3= -> http://xxx.x.xxx.x 
/dir/dir/page/?arg2=111&& argn=xyyyy -> http://xxx.x.xxx.x 
/page.html (is not redirected but matched to other existing rules in nginx) 

어떻게 멋지게 표현할 수 있습니까? 어떤 이유로 location에는 정규 표현식과 일치시킬 인수가 없습니다.

답변

1

인수 순서가 결정 론적이라고 가정하면 $ request_uri 변수에 대해 여러 정규식을 테스트 할 수 있습니다.

map 지시문을 사용하여 여러 규칙과 대상을 나열 할 수 있습니다. 예를 들어

:

당신은 물론 삽입 간격 ( .*) 및 단어 경계 ( \b)에 의해 위의 정규 표현식을 향상시키고 자하는 것입니다
map $request_uri $redirect { 
    default       0; 
    ~^/page\.html\?arg1=sxx&arg2=uuu http://xxx.x.xxx.x; 
    ~^/page\.php\?arg3=    http://xxx.x.xxx.x; 
    ... 
} 

server { 
    ... 
    if ($redirect) { 
     return 301 $redirect; 
    } 

.

map 지시어의 경우 this document, if의 경우 this note을 참조하십시오.