- PR -

ApacheでコンテントタイプによりStrutsのActionを実行

1
投稿者投稿内容
人形師
会議室デビュー日: 2003/06/29
投稿数: 1
投稿日時: 2006-06-02 16:50
お世話になります。

Strutsを用いてWebシステムを作成しています。
今、指定されたディレクトリにある、指定された拡張子のファイルにアクセスした場合に、
StrutsのActionを実行させる、ということを行おうと思っています。

そこで、Apacheのhttpd.confで以下のようにActionディレクティブを設定しました。

○ Apacheのhttpd.conf(追加した内容のみ)

Alias /doc/ "C:/sample_document/"

<Directory "C:/sample_document/">

AddType sample/doc .html .txt .pdf

Action sample/doc /sample/test.do

</Directory>

上記設定をした状態で、
http://localhost/doc/test.html
とアドレスバーに打ち込んでアクセスしてみたのですが、

HTTPステータス 404 - /sample/test.do/doc/test.html
type ステータスレポート
メッセージ /sample/test.do/doc/test.html
説明 The requested resource (/sample/test.do/doc/test.html) is not available.

と404エラーが出てしまいました。
(C:/sample_document/test.htmlは存在しています)

下記Actionディレクティブの設定で、/doc/test.htmlにアクセスされた場合、
/sample/test.doが実行されると思ったのですが、打ち込んだパスの前に
/sample/test.doが挿入されたURLとなっているだけのようです。

http://localhost/doc/test.html
とアクセスされた場合に、
http://localhost/sample/test.do
が実行されるようにするにはどうすればよいでしょうか?

【環境】
Windows XP
Apache 2.0.58
Tomcat 5.5.12
Struts 1.2.4
mod_jk2
koe
大ベテラン
会議室デビュー日: 2003/07/13
投稿数: 198
投稿日時: 2006-06-02 17:39
その設定だと、test.doへのリクエストをApache自身が処理しようとしますよね。
Tomcatに回すようにしないとダメなのでは?

mod_jk2でなくmod_jkでの書き方になりますが、

Tomcat側で/docというコンテキスト名を持つWebアプリをデプロイした上で、
コード:
JkMount /doc/*.html ajp13
JkMount /doc/*.txt  ajp13
JkMount /doc/*.pdf  ajp13


として、/doc/*.(html|txt|pdf) なリクエストをTomcat側に処理させたらどうでしょうか。

あと、mod_jk2は既にdeprecatedなので、mod_jkの使用をお薦めします。
teto
ベテラン
会議室デビュー日: 2002/07/31
投稿数: 61
投稿日時: 2006-06-02 18:12
引用:
http://localhost/doc/test.html
とアクセスされた場合に、
http://localhost/sample/test.do
が実行されるようにするにはどうすればよいでしょうか?



ここだけなら、mod_rewriteを使用すれば実現可能かと
思います。
何がやりたいのかが文脈では把握できなかったので
解決になるかどうかは分かりませんが。
1

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