dポイントプレゼントキャンペーン実施中!

お世話になります。
現在、以下の環境でWebアプリケーションを開発しています。

CentOS5.4
Apache2.2.3
Tomcat7
JavaSE6

ApacheとTomcatの連携にmod_proxy_ajpモジュールを使用しています。
ただ、クライアントからアクセスするURLと連携先のURLが異なるため、Java側でHttpRequestからコンテキストパス以降を取得するとajp連携されたパスしか取得できず、クライアントがアクセスしたURI情報が取得できません。

これを対策するために、Apacheモジュールのmod_rewriteとmod_headersを利用して、
クライアントがアクセスしたURIをリクエストヘッダに埋め込もうとしています。

以下httpd.confに追加した設定です。
(rewrite.confも試しました)
RewriteEngine On
RewriteRule .* - [E=ORG_QUERY_STRING:%{QUERY_STRING}]
RequestHeader append "test_query_string" %{ORG_QUERY_STRING}e

設定後、Apacheを再起動してWebアプリケーションにアクセスすると、リクエストヘッダ自体は追加されているのですが値が(null)となってしまい取得できません。

mod_rewriteの環境変数が取得できていないのかと思い、

RewriteRule .* - [E=ORG_QUERY_STRING:TEST]

と固定文字列を埋め込んでも取得できませんでした。
このことからENVによる環境変数への設定、または参照が出来ていないのかと思われますが、どうにも解決できません。
参照時に

RequestHeader append "test_query_string" %{ENV:ORG_QUERY_STRING}e

としても同様の結果でした。

心当たりのある方、またはデバッグ方法や別解などアドバイスを頂けないでしょうか?
なお、httpd.confではmod_rewrite、mod_headersのモジュール定義は有効となっております。
また、環境変数のスペルミスもコピペして確認しております。

A 回答 (1件)

Rule にマッチしていないか、mod_rewrite が動作していないか・・・・・・・。



ちょっと正規表現の細かいところが思い出せないのですが(というか合っているように思うのですが)、RewriteRule の条件を ^.*$ とか ^(.*)$ にしてみるとどうでしょうか?

あとは RewriteRule で適当な URL に実際に書き換えてみる。書き換えられなければ mod_rewrite が動作していないということではないかと・・・・・・・。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!