2

유래 사용자를 아파치 mod_rewrite를이 - POST 데이터 손실 리디렉션 - 405 오류

나는이 다음 경로에 게시 된 데이터 수용해야하는 아파치 응용 프로그램 :

/sample/HostChange/Submit 
/sample/HostChange/SubmittoAPI 

나는 현재 다음과 같은 사용하고 있습니다를 301 리디렉션 규칙. 이것은 POST가 리디렉션되고 두 번째 요청이 모든 데이터를 잃어 버리는 GET이므로 원하는대로 아닙니다. 301 요청이 올바른 URL로 이동하는 것을보고 있는데 두 번째 요청은 GET이며 405 응답 코드가 발생합니다.

htaccess로 :

RewriteEngine On 
Redirect 301 /sample/HostChange/Submit /event 
Redirect 301 /sample/HostChange/SubmittoAPI /date 

내가 리디렉션을 사용하여 확신이 문제입니다. 누군가가이 POST 히트를 새 경로로 리디렉션하는 데 사용해야 할 올바른 RewriteCondition을 알아낼 수 있지만 데이터를 애플리케이션에 보관할 수 있습니까?

감사합니다.

+0

가 ¿? 제가 물어 보는 이유는 Redirect (httpd.apache.org/docs/2.2/mod/mod_alias.html) 지시어에 있습니다. "이전 URL 경로는 대소 문자를 구분하는 (% -decoded) 경로입니다." " POST가 수정되어 다음 GET에 영향을 줄 수 있습니다. 그냥 생각이지만, 그렇다면 mod-rewrite를 대신 사용해보십시오. –

+0

mod_rewrite를 사용하고 있습니다. – god

+0

뭔가 빠뜨린 것이 아니라면 [mod-alias] (http://httpd.apache.org/docs/2.2/mod/mod_alias.html) 지시어 인 Redirect를 사용하고 있습니다. 나는 [mod-rewrite] (http://httpd.apache.org/docs/current/mod/mod_rewrite.html) 지시자 인 RewriteRule을 의미한다. –

답변

0

POST (POST)로 리디렉션 할 수 있다고 생각하지 않습니다. 브라우저는 데이터를 다시 POST하지 않습니다.

브라우저에서 새 URL로 데이터를 다시 보내려면 자바 스크립트로 일부 HTML을 출력해야합니다.

리디렉션 대신 일부 서버 측 코드에서 POST 데이터를 받아 들인 다음 내부적으로 URL에 식별 할 수있는 토큰으로 리디렉션 할 수 있습니다.

데이터가 부족한 경우 데이터를 쿼리 매개 변수로 포함하도록 URL을 다시 작성하십시오.

+0

303 리디렉션 사용 시도에 대한 답변은이 질문도 참조하십시오. http://stackoverflow.com/questions/7574068/about-redirect-as-post – Thilo

+0

나는 그것이 303이 아니라 307이어야한다고 생각한다. – Gerben

0

다음 행을 따라 뭔가가 작동해야합니다. 현재 정규식이 시도되지 않았으므로 재 작성 로그를 확인하고 작동 방식을 확인하십시오.

+0

그건 작동하지 않았다. 404 응답 코드. – god

+0

/sample/HostChange/Submit에 sinle 요청에 대한 로그를 다시 쓰려고 아파치가 작성한 것을 보여줄 수 있습니까? 내가 말했듯이 정규 표현식을 검사하지는 않았지만 위의 구조는 페이로드가있는 경우 페이로드를 보존하고 쿼리 매개 변수는 원래 URL에 대한 요청이 있으면 그대로 유지합니다. URL 패턴에 따라 요청을 zope 또는 jboss로 리디렉션하기 위해 프로덕션에서 비슷한 것을 사용합니다. – opensourcegeek

0

나는 같은 문제가있다. 내게는 요청을 실제로 리디렉션하지 않고 다시 작성하는 데 도움이된다. 나는 이것이 귀하의 문제에 적용 가능한지 지금은 아닙니다.

여기에 세부 사항은 그것은 나를 위해 일한 : 당신은 유행의 재 작성을 사용하여 시도 적이 PHP Rewrite url and preserve posted data