No.17789 投稿時間:2004年11月26日(Fri) 06:40 投稿者名:かぶらぎ URL:
こんにちは。
httpd.conf の UsecannonicalName エントリーを操作することによって
URLの最後に"/"を自動的に補完させることができるのは知られていますが、
○ http://www.domain.com ⇒ http://www.domain.com/
私の環境では以下の状況では補完してくれません。
X http://www.domain.com/~username ⇒ 正しくない要求400で"/"を補完してくれない。
サブディレクトリまで補完してくれないようです。
どうすればサブディレクトリまで"/"を補完させることができるのでしょう?
No.17794 投稿時間:2004年11月26日(Fri) 09:53 投稿者名:通-行-人 URL:
> httpd.conf の UsecannonicalName エントリーを操作することによって
Typo。 「n」 が 1 つ多いです。
> ○ http://www.domain.com ⇒ http://www.domain.com/
これは、 ブラウザの動作なので勘違いしないように。
HTTP の仕様では、 URI のパス ・ ファイル名部分 (「http://www.example.com/path/filename.html」 のうち 「/path/filename.html」 の部分) が空列の場合は、 「/」 を指定したものとしてサーバにリクエストするよう定められています (RFC2616、 5.1.2 節)。
従って 「http://www.example.com」 と 「http://www.example.com/」 では、 ブラウザのサーバに対する動作は等しくなります。
これらは 「http://www.example.com/path」 が要求されたときに 「http://www.example.com/path/」 へのリダイレクト応答を行う、 サーバ側の動作とは全く異なります。
No.17797 投稿時間:2004年11月26日(Fri) 16:35 投稿者名:かぶらぎ URL:
返信ありがとうございます。
なるほど。それはブラウザの動作だったんですね。
問題がすっきりしてきました。
> > httpd.conf の UsecannonicalName エントリーを操作することによって
>
> Typo。 「n」 が 1 つ多いです。
申し訳ないです。これはここだけのタイプミスです。
httpd.conf では "UseCanonicalName On" となっていました。
(コピペしたのでまちがいないです(笑))
とにかく、Apacheの再起動を念のため行いましたが、
"UseCanonicalName On" となっていても補完されません。
httpd.conf のconfigtestもsyntax OKです。
再度apacheをコンパイルしてインストールしたほうが早いですかね?
問題を探るより。(笑)でもくやしいなぁ~。
No.17798 投稿時間:2004年11月26日(Fri) 17:29 投稿者名:松元 URL:
リダイレクト応答を行うのは
mod_dir でなかった?
No.17803 投稿時間:2004年11月26日(Fri) 22:45 投稿者名:かぶらぎ URL:
> リダイレクト応答を行うのは
> mod_dir でなかった?
ちなみに、
現在私のサーバでアクティブなモジュールのなかに
mod_dir は存在しております。Webmin上からの確認です。
No.17825 投稿時間:2004年11月28日(Sun) 18:34 投稿者名:かぶらぎ URL:
http://www.miloweb.net/cgi-bin/wforum/wforum.cgi?mode=allread&no=2881&page=50
最終的に上記文献が参考になりました。
上記文献に従い、telnetでlocalhost 80に接続、
ドキュメントルートの /test/ フォルダにアクセスしました。
# telnet localhost 80 ←自分自身の80番ポートにtelnetでアクセス
Trying 127.0.0.1...
Connected to localhost.localdomain
Escape character is '^]'.
GET /test HTTP/1.0 ←わざと最後のスラッシュを省略したリクエストを送る
←ここから返された答え
HTTP/1.1 301 Moved Permanently ←301番のエラーが発生している
Date: Fri, 25 May 2004 19:16:49 GMT
Server: Apache/1.3.33 (Unix) mod_ssl/2.X.X OpenSSL/0.X.X
Location http://www.example.com:443/test/ ←manualがディレクトリであることを判断し転送先を返している
Connection: close
....以下省略....
ここでいらない記述がドメインにくっついてきていることに気が付きました。:443 です。
原因は私の httpd.confの次の記述でした。
# Port: The port to which the standalone server listens. For
# ports < 1023, you will need httpd to be run as root initially.
#
Port 80
Port 443
いらないところにport 443と書いていたためです。
これを削除し、apache を再起動をかけ、正常動作を確認しました。
今回は「問題があったらtelnet でlocalhostにつなげてしらべる」
という方法を学習しました。大変ありがとうございました。