2017-11-14 31 views
0

이전 응용 프로그램을 가리키는 링크를 새 응용 프로그램으로 리디렉션하려고합니다. 새 응용 프로그램은 직접 링크를 처리 할 수 ​​없으므로이를 검색 대상으로 지정하려고하지만이 검색은 제대로 작동하려면 따옴표로 묶여 야합니다. 나는 다음과 같은 구성을 시도했지만 400 잘못된 요청을 얻을 수있다는 내가 할 경우 :마지막 역 참조 후 텍스트가있는 HAProxy reqrep

reqrep ^([^\ :]*)\ /\?pdf=(.*) \1\ /newpdf?search=%22\2 

이 불가능합니다 : 가장 가까운 내가 온

reqrep ^([^\ :]*)\ /\?pdf=(.*) \1\ /newpdf?search=%22\2%22 

은 다음과 같이 마지막 역 참조 후 모든 것을 제거하는 것입니다 마지막 역 참조 후에 무엇을 넣을까요?

답변

1

문제는 역 참조 이후에 텍스트가 아닙니다. 공백과 HTTP 버전이있는 URI 후

GET /page?pdf=foo HTTP/1.1 <<< here 

: 당신은 당신이 manipating하는 캐릭터의 성격을 내려다있다. 그걸 안으로 붙잡고 있어요 \2. 공백을 캡처하고 끝 부분에 고정 된 하나 이상의 공백이 아닌 문자를 캡처하여 \3으로 분리하십시오.

reqrep ^([^\ :]*)\ /\?pdf=(.*)(\ [^\ ]+)$ \1\ /newpdf?search=%22\2%22\3 

더 나은 솔루션은 쿼리 문자열을 조작 할 페치하고 http-request 요청 수정 기능을 사용하는 것입니다.