mod_rewrite でセッションが切れる?
結局あまかい完成しなかったな……とゆーのも、 mod_rewrite を通すとセッションが切れちゃう、ってゆーのを解決しようとしてて……。
Struts だと /apps/Amakai.do みたいなパスになって格好悪いから mod_rewrite で隠してるんだけど、その際になぜかセッションが切れる(汗)。
POST する際に、 /apps/AmakaiFrom.do から POST して /apps/AmakaiTo.do に行って、さらにそこから mod_rewrite の RewriteRule に書かれてるパス、たとえば /Amakai/amakaiTo にリダイレクトさせてその中で再度 /apps/AmakaiTo.do にとばせてここで処理する、ってしてます。詳しくはこの前の記事参照。
ところがこの RewriteRule で飛ぶ時にセッションが切れちゃうらしく、 getId() で返ってくるセッションIDが変わってる……当然セッションも残らないとゆー。どうしたもんかな。
一応暫定対策として、 Action クラスで
public ActionForward execute ( ActionMapping mapping , ActionForm form , HttpServletRequest request , HttpServletResponse response ) throws Exception { //... url = "/Amakai/search/" + session.getId() + "?is_redirect=true&encoding=UTF-8&query=fate&searchindex=Books"; response.sendRedirect( url ); }
といった URL を作ってリダイレクト、それを
RewriteRule ^/Amakai/search/(.*)$ /webapps-amakai/Search.do;jsessionid=$1?is_redirect=true&encoding=UTF-8&%{QUERY_STRING} [P,L]
という形で付け直す、っていうのができるのは確認しました。ただ、セッションIDが URL に残っちゃうのがなぁ。まぁ Amazon とかもバリバリ出してるっぽいけど(爆)。
これ以外の方法としては、クッキーを使うとかかなぁ……逆に、セッションIDを渡していく方法ならクッキーを使わずにできるってゆーメリットはあるんだよなぁ。
まぁそんな問題にはまってて、今日はあんま進まなかった(汗)。とりあえず明日は他の更新をして、来週の水曜までくらいには目処付けたいな……。