2011-08-05 5 views
0

나는 이것을 mod_jk와 mod_proxy 모두와 함께 시도해 보았고 같은 결과를 얻었습니다. 이 mod_rewrite는 규칙을 사용apache2 tomcat6 pretty urls로 mod_rewrite가 사용자 세션 정보를 잃습니다 - 빈 쇼핑 카트

잘 작동합니다 :

RewriteRule ^/(.*)\-blah.html$ /blah/blah/blah?blah=l2vb&party_name=$1 [R,L] 

이 가진 문제는 내가 피하기 위해 희망 줄 것입니다 브라우저의 주소 표시 줄에 표시되는 추악한 새로운 URL /blah/blah/blah?blah=l2vb&party_name입니다. 이 작업을 수행하는 플래그는 [R] 인 것으로 보입니다.

RewriteRule ^/(.*)\-blah.html$ /blah/blah/blah?blah=l2vb&party_name=$1 [P,L] 

NB :

다음 규칙은 추악한 URL 만 표시 새로운 꽤 하나를 숨 깁니다 여기에 유일한 차이점은 [] 사이의 끝에있는 플래그입니다.

사용자가 장바구니에 이미 항목이있는 경우 문제가 발생합니다. 아무 래도 그들의 연결 세션 (또는 그것이 무엇이든간에 - 내 깊이가 아니라 여기!)이 처음부터 다시 시작되도록 다시 초기화됩니다.

나는 [PT,L], [R,PT] 등의 여러 플래그 조합을 시도했으며 지금까지 행운이 없었습니다.

답변

0

[R] 플래그는 브라우저의 URL을 분명히 변경하는 302 리디렉션 코드를 의미합니다.

RewriteRule ^/(.*)\-blah.html$ /blah/blah/blah?blah=l2vb&party_name=$1 [QSA,L] 

QSA 플래그 (더 정확하게하기 위해 새로운 URL에 추가합니다) 쿼리 문자열이 기존 보존됩니다 .. 당신이 조작하는 것처럼 그렇지 않으면 분실 :

난 당신이 QSA 플래그를 필요가 있다고 생각 쿼리 문자열. 나는 세션 ID 또는 뭔가 쿼리 문자열을 통해 전달 될 수 있습니다 .. 생각하고 URL을 잃어버린되면, 그래서 서버가 새로운 세션을 만듭니다 잃게됩니다. 그렇다면 위의 내용이 문제를 해결해야합니다.

Apache 설명서 : http://httpd.apache.org/docs/current/rewrite/flags.html#flag_qsa