投稿日:2004年05月28日 作成鷹の巣

No.16188 apacheでURLの最後のスラッシュが補完されない



apacheでURLの最後のスラッシュが補完されない

No.16188 投稿時間:2004年05月28日(Fri) 19:30 投稿者名:せんと URL:

RedHatLinux9とapache1.3.31で練習用Webサーバーを立てています。
httpd.confもほとんどいじっておらずaliasの設定だけ一つ追加しました。
トップページ(http://aaa.bbb/)だと最後の/を指定しなくても
自動的に補完されてちゃんと表示されるのですが、他のページだと/が補完
されずにエラーになってしまいます。
どうすれば解消されるでしょうか?
またエラーになると書きましたが、そのエラーの内容も判然としません。
例えばaliasでファイルシステムの/disk/とURL上の/disk/をマッピングして
いるのですが、http://aaa.bbb/diskと指定すると404エラー。
またマニュアルディレクトリhttp://aaa.bbb/manualだと301エラー
アイコンディレクトリhttp://aaa.bbb/iconsだと404エラー
となってしまいます。何か違いがあるのでしょうか?
長くなりましたがよろしくお願いします。


Apacheのバージョンを2.0にして試して頂きたいと思います。

No.16195 投稿時間:2004年05月28日(Fri) 22:14 投稿者名:誰か@RedHatLinux9 URL:

私もよくわからないのですが、Apacheのバージョンを2.0にして試して頂きたいと思います。(私は1.3は使ったことがないので)


Alias の設定がまずいからです。

No.16198 投稿時間:2004年05月28日(Fri) 23:29 投稿者名:おやじ URL:http://www.aconus.com/~oyaji/

> RedHatLinux9とapache1.3.31で練習用Webサーバーを立てています。
> httpd.confもほとんどいじっておらずaliasの設定だけ一つ追加しました。
> トップページ(http://aaa.bbb/)だと最後の/を指定しなくても
> 自動的に補完されてちゃんと表示されるのですが、他のページだと/が補完
> されずにエラーになってしまいます。
> どうすれば解消されるでしょうか?
> またエラーになると書きましたが、そのエラーの内容も判然としません。
> 例えばaliasでファイルシステムの/disk/とURL上の/disk/をマッピングして

Alias /disk/ "/usr/local/disk/" のようになっていませんか? であれば、こうなります。
Alias /disk "/usr/local/disk" とすれば解決するはずです。

> いるのですが、http://aaa.bbb/diskと指定すると404エラー。
> またマニュアルディレクトリhttp://aaa.bbb/manualだと301エラー

これは、良く分からないですね。上記のようにAlias をチャント設定してあげれば、Apacheはhttp://aaa.bbb/manualだと301エラーを返し、Location でhttp://aaa.bbb/manual/にリダイレクトするように返します。ですから、クライアント側がLocationを認識できないのではないかと思いますが。 ethereal あたりでパケットキャプチャすれば、この辺の動きが見えますよ。

> アイコンディレクトリhttp://aaa.bbb/iconsだと404エラー
> となってしまいます。何か違いがあるのでしょうか?


仮想マウントの設定があやしい。

No.16200 投稿時間:2004年05月29日(Sat) 03:00 投稿者名:帯鯖 URL:

帯鯖@名古屋です。

> > http://aaa.bbb/diskと指定すると404エラー。
> > またマニュアルディレクトリhttp://aaa.bbb/manualだと301エラー
>
> これは、良く分からないですね。上記のようにAlias をチャント設定してあげれば、Apacheはhttp://aaa.bbb/manualだと301エラーを返し、Location でhttp://aaa.bbb/manual/にリダイレクトするように返します。ですから、クライアント側がLocationを認識できないのではないかと思いますが。 ethereal あたりでパケットキャプチャすれば、この辺の動きが見えますよ。
>

301, 200 の順に返しているのであれば、サーバ側での "/" 補間の設定はOKでしょう。
あとは、仮想マウントのみですね。


解決

No.16203 投稿時間:2004年05月29日(Sat) 05:48 投稿者名:せんと URL:

おふたりとも詳細な解説ありがとうございます。
おやじ様のおっしゃる通りAliasの設定がまずかったようです。
Alias /disk "/disk"
とすることで、ログを見る限りちゃんと301でLocationヘッダを飛ばしているようです。
が、やはりサーバエラーになってしまいます。
そこで、おやじ様が紹介して下さったEtherealを使って一連のリクエスト・レスポンスをキャプチャ
してみますとapacheはちゃんと301を返してくれていました。
おかしいなと思ってよくよく見てみますと301コードのあとのLocationヘッダが間違っていました。
というのも今回の練習機、練習ということでホスト名も適当に入力しており、なんとそのホスト名が
Locationヘッダとして返されていました。それではエラーになるはずです。
ホスト名を練習機のローカルアドレス192.168.0.99に変更することでうまくいきました。
(本当はDDNS等で取得して設定すべきなのでしょうが・・・)


|目次|掲示板|過去ログ目次|▲頁先頭|