내부 앱 서버에 대한 역방향 프록시 역할을하는 아파치 웹 서버가 있습니다. 나는 이것을 달성하기 위해 ProxyPass와 ProxyPassReverse를 사용했다. 다른 응용 프로그램에 다중 컨텍스트 루트 매핑이 있습니다.아파치에서 URL 재 작성이 끝나면 POST 요청이 GET으로 변환됩니다. httpd
사용자가 https://mydomain.com/contextRoot 대신 https://mydomain.com으로 웹 사이트에 직접 액세스 할 수 있도록 한 컨텍스트의 도메인 이름에서 컨텍스트 루트를 제거하려고합니다. 이 컨텍스트에 대해 proxypass 및 proxypassreverse 구성 대신 다음 다시 쓰기 규칙을 추가했습니다.
# redirecting old URL to new URL
RewriteRule ^/contextRoot(.*)$ https://mydomain.com$1 [L,R=301]
# proxying to internal app servers
RewriteCond %{REQUEST_URI} !^(/anotherContextRoot1.*)$
RewriteCond %{REQUEST_URI} !^(/anotherContextRoot2.*)$
RewriteRule .* http://10.1.0.1:8080/contextRoot%{REQUEST_URI} [L,P]
이 구성은 모든 http GET 요청에 적합합니다. POST 요청의 경우 리디렉션이 발생하지만 후속 호출은 GET이됩니다.
이 문제가 발생하는 이유와 해결 방법을 알려주십시오. 또한 이전 구성에서 proxypassreverse를 사용하여 수행 한 작업을 수행하기 위해 추가 한 다시 쓰기 규칙 구성이 있는지 이해하고 싶습니다.
가능한 복제본 [redirectmatch 변경 게시 됨] (http://stackoverflow.com/questions/10586779/redirectmatch-changes-post-to-get) –