- PR -

Apache&Tomcatでリダイレクト処理時に相対URLを使用

1
投稿者投稿内容
ヴァンフォーレ増嶋
常連さん
会議室デビュー日: 2007/08/06
投稿数: 31
投稿日時: 2008-08-11 20:17
ヴァンフォーレ増嶋です。
お世話になっております。

現在、Webサーバを商用のWeblogicからフリーのApache&Tomcatへ移行しようとしています。(ずっと前からココでも発言してますが、まだやってます・・・。)

[環境情報]

『旧Web』
Windows 2000 Server
JDK1.3.1.19
Weblogic 7.0 SP2

『新Web』
Windows Server 2003
JDK1.6.0.01
Tomcat 6.0.16
Apache 2.2.4(これから連携予定)

---ご相談内容---

Weblogicでは、構築時に以下の設定を追加しておりました。
(設定した社員は退職・ドキュメント無しのため経緯は不明)


-Weblogicドキュメントから抜粋-

redirect-with-absolute-url

<redirect-with-absolute-url> 要素は、javax.servlet.http.HttpServletResponse.SendRedirect() メソッドでのリダイレクトに相対 URL と絶対 URL のどちらを使用するかを制御します。 プロキシ HTTP サーバを使用しており、URL を非相対リンクに変換したくない場合は、この要素を false に設定します。

デフォルトの動作では、URL が非相対リンクに変換されます。

http://edocs.beasys.co.jp/e-docs/wls/docs70/webapp/weblogic_xml.html

-Weblogicドキュメントから抜粋-

上記と同様の設定をTomcatで実施しようとしたところ、見当たらずサポートベンダからも「Tomcatの設定変更では不可能」と言われてしまいました。TomcatのHTTPサーバは細かい設定ができないのだと思い、Apacheと連携させれば可能かと考えています。(Apacheはベンダサポート未契約)

リダイレクト処理時に、相対URLを使用するようにしたいのですが、実現方法をご存知の方がおりましたらご教授頂けないでしょうか?
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-08-11 21:01
前に対応したことがありますが、
サーブレットフィルタで、対応させました。

コード:
HttpServletResponse res = new HttpServletResponseWrapper(response) {

	public void sendRedirect(String url) throws IOException {
		HttpServletResponse response =
				(HttpServletResponse) getResponse();
		response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
		response.setHeader("Location", url);
	}
};

chain.doFilter(req, res);


力技になりますね。
yamasa
ベテラン
会議室デビュー日: 2003/02/15
投稿数: 80
投稿日時: 2008-08-11 21:25
Apache 2.2系でTomcatと連携するのであれば mod_proxy_ajp を使うでしょうから、
その設定に加えて ProxyPassReverse ディレクティブ
http://httpd.apache.org/docs/2.2/ja/mod/mod_proxy.html#proxypassreverse
も指定してやれば、リダイレクト時に任意の絶対URLを指定することができませんかね?
相対URLにするのはできないと思いますが。
ヴァンフォーレ増嶋
常連さん
会議室デビュー日: 2007/08/06
投稿数: 31
投稿日時: 2008-09-30 15:35
ヴァンフォーレ増嶋です。
お世話になっております。

かつのり様、yamasa様、アドバイスありがとうございました。

今回は、かつのり様の案をヒントにリダイレクト処理を行うjspを修正することで対応できました。「解決後に、返信を」を思っていたのですが、すっかり返信が遅くなりまして、申し訳ありませんでした。
1

スキルアップ/キャリアアップ(JOB@IT)