読者です 読者をやめる 読者になる 読者になる

Tomcat + Apacheで、マルチバイトを含んだURLがうまく処理できない

とある所ではまって、なおかつ情報があまりなかったので載せておきます。


現象

Tomcatの上に載せたHudsonに、Apacheからmod_proxy_ajp経由でアクセスしようとすると、マルチバイトを含んだURLがうまく処理できない。例えば、新規ジョブ作成( http://localhost/hudson/view/すべて/newJob )をクリックしたときに、マルチバイトのデコードに失敗して404 Not Foundが発生する。

Tomcat - 日本語 - Hudson Wikiの通りに、コネクタに「URIEncoding="UTF-8"」を設定しても発生します。8080・8009番ポート両方に設定しても変わらず。

発生環境

断定はできないけど、多分Windows環境だと起きるみたい。Windowsだと2箇所で発生して、Ubuntuだと起きませんでした。

一応、再現した環境の情報はこんな感じ。

細かい情報は覚えていないけど、別のWindows Vista環境でも発生しました。

解決策
<Location /hudson/>
    ProxyPass ajp://localhost:8009/hudson/ nocanon
</Location>

のように、"nocanon"を追記してやります。こうすると、マルチバイトを含んだURLもうまく処理してくれました*1

参考 : 乳牛日記: mod_proxy(ajp) + tomcatでリクエストパス部が勝手にデコードされる

*1:サーバ分野には悲しいぐらいに疎いので、詳しいことはあまり聞かないでやってください、サーセンorz