http://mysite.com/?action=add&goback=1
과 같은 URL을 http://myiste.com/add/?goback=1
으로 리디렉션하고 싶습니다. nginx 리디렉션 리디렉션 규칙이 제대로 작동하지 않습니다.
location/{
if ($request_uri ~* /\?action.*) {
add_header Cache-Control private;
rewrite ^/\?action=([^&]*)&?(.*)$ /$1/?$2 permanent;
}
}
그러나 그것은 작동하지 않습니다 내가 왜 표시되지 않습니다.
P. 나는 if ($request_uri ~* /\?action.*) {
을 나타 내기 위해서 add_header
이 필요했습니다.
rewrite ^/\?action=(\w+).*$ /$1/?$query_string permanent;
과 같은 여러 가지 솔루션을 시도했습니다.
UPDATE :
실제 목표는 :
URL이
http://mysite.com/add/?param1=param1&...
/(추가) /이되어야 액션 PARAM처럼 보이는 경우 :
location ~ /[\-\w]+/ {
rewrite ^/([^/]*).*$ /?action=$1 last;
...
}
제대로 작동하고있는 것 같아 필요하지 않습니다. 이 하나
엑스트라 도움 URL은 다음과 같습니다 경우 : 내가 '나는 돈 결과를 얻고있어이 부분을 수행하려고 할 때
http://mysite.com/add/?param1=param1&...
:
http://mysite.com/?action=add¶m1=param1&...
의 nginx는 리디렉션해야 필요 - 무한 리디렉션 루프, URL은 http://mysite.com/add/?action=add¶m1=param1&...
등입니다.
내 목표를 해결하는 솔루션이 있습니까?
나는 내가 실제로 필요로하는 것이 무엇인지 명확히하고 있다고 생각한다 (질문은 업데이트 될 것이다). 대답은 도움이되지만'/ add /? action = add'로 리디렉션됩니다. – Nemoden
+1했으나 죄송합니다. 수락 할 수 없습니다. – Nemoden
'action = add'를 제거하는 것은 재 작성 교체 문자열에'action = add'가없는 쿼리 문자열을 추가하고 기본 쿼리 문자열 append를 피하기 위해 다른'? '를 추가하는 것만 큼 간단합니다. '다시 쓰기 ^/$ arg_action /? $ newquery? 영원한; '트릭을 할 것입니다. '$ newquery' 변수를 만드는 방법은 독자에게 연습으로 남겨 둡니다 (힌트 :'map $ args $ newquery {~^action = add \ & (?.+) $ foo; }'는 좋은 출발점이 될 수 있지만 일반적으로'action ='인수가 먼저 나올 것이라는 보장이 없기 때문에 가능한 모든 경우를 다루지는 않습니다. –