QA@IT

java のWebアプリを解析中です。URLの末尾にスラッシュが入ってしまう。

6766 PV

既存のWebアプリを調査しているのですが、どこにそのような設定があるのかが解らないという質問です。

事象としては、以下のように、URLの末尾にスラッシュを入れてしまうというものです。

https://localhost/emplist

https://localhost/emplist/

構成としては、
apache + tomcat
SAStruts を使用したアプリケーションです。

apacheでよく使われる、rewrite_modは使用していません。rewrite.confファイルもありません。
apacheのDirectorySlash は設定していません。

Firefoxで見ると、
https://localhost/emplist
ではリダイレクトを行っているようなのです。302のステータスが出ています。

apacheのmodでもないなら、どこを見ればいいのでしょうか。

回答

こちらが参考になりはしないでしょうか。
Apache2.2のマニュアルですが。

http://httpd.apache.org/docs/2.2/ja/mod/mod_dir.html

DirectorySlashディレクティブでこの設定を変更できるので、気に入らなければoffにすることができます。
ただしこの設定変更は、マニュアルに記述されている「セキュリティ警告」をよく読み、リスクを理解してから実行してください。

ApacheはCoreに最小限の機能だけ持たせ、ほとんどの機能をmod_ではじまるモジュールで実現しています。
一応mod_direとモジュールの名前が付いていますが、mod_rewriteのようなオプショナルな機能ではありません。

編集 履歴 (0)
  • 上記で解決するんじゃないかとは思ってますが、もし現象が発生するディレクトリがApacheではなくTomcat配下なのであれば、そちらを確認する必要が出てきます。ApacheとTomcatどちらの配下なのかは、お使いのコネクタ(mod_jkなど)の設定を確認していただく必要があると思います。Java環境の設定はもうだいぶ忘れちゃった。。。 -
  • 一応 mod_dir もオプショナルでは無いでしょうか?(DirectoryIndex が使えなくなってしまうので無効にすることはかなり考えにくいですけれども) -
  • ありがとうございます!上記を試したけれど、効果がないようでしたので、Apacheをかませずにtomcatでポート8080でつなげたんですが、やっぱりリダイレクトが発生しており、tomcatに問題があることが解りました!
    リダイレクトだけで、こんなにいろんな情報があるんですね・・・。甘く見てました。
    ちょっと勉強してから、もう一度質問してみます。

    ありがとうございました!
    -
  • >ngyukiさん オプショナルとは誤解を招く表現でしたね。通常の環境であれば最初から有効になっており、基本機能的位置づけで動作しているかどうかくらいの視点で書きました。 -
  • >currysitaさん 考えて見えればtomcat単独で動作させてしまえば切り分けが簡単でしたね。数年触ってないとそんな基本も忘れてしまいます。失礼しました。 -
  • WinXpSp3+IE8、Tomcat7で変な動きをしたことがあります。web.xmlのerror-pageが未定義の場合は、/付きへリダイレクト。そして、error-pageを定義すると、リダイレクトせずIEの404を表示した覚えがあります。 -

SAStrutsのRoutingFilterクラスでやっていると思いますよ。

このあたりじゃないでしょうか?

if (!path.endsWith("/")) {
String queryString = "";
if (req.getQueryString() != null) {
queryString = "?" + req.getQueryString();
}
res.sendRedirect(contextPath + path + "/"
+ queryString);
return;

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。