2016-08-19 1 views
1

Nginx 영구 리디렉션을 수행하고 인수의 대소 문자를 변경해야합니다.Nginx에서 인수의 대문자를 다시 쓰고 변경하는 방법은 무엇입니까?

는 현재 재 작성 규칙은 다음과 같습니다

set_by_lua $var1 "return ngx.arg[1]:lower()" $1; 
set_by_lua $var2 "return ngx.arg[1]:lower()" $2; 

그러나 그것을 : 내가 뭘하려

location/{ 
    rewrite ^/old_url/(.*)/(.*).html$ "http://cdn.example.com/test/$1 $2.pdf" permanent; 
} 

가 두 번째 인수를 재 작성 루아를 사용하여 대소 문자를 변경 한 다음 $var1$var2을 통과했다 $1$2은 다시 쓰기 지시문 범위에서만 액세스 할 수 있으므로

리디렉션을 처리하는 올바른 방법은 무엇입니까?

답변

2

그래서, 여기에 솔루션입니다 :

rewrite를 사용하여 URL을 일치 location를 사용하는 대신에
location ~* /old_url/(.*)/(.*).html { 
    set_by_lua $var1 "return ngx.arg[1]:upper()" $1; 
    set_by_lua $var2 "return ngx.arg[1]:upper()" $2; 
    return 301 "http://cdn.example.com/test/$var1 $var2.pdf"; 
} 

. 그런 다음 $1$2에 액세스 할 수 있으며 Lua로 수정할 수 있습니다.

관련 문제