電子書籍の厳選無料作品が豊富!

Apache サーバを立ててみました。
一応、普通に動いているのですが、サイト配下のフォルダにアクセスする際、
URLの最後のスラッシュを付け忘れるとドメインの www が除去されて、「ページが見つかりません」に
なってしまいます。

OK → http://www.example.jp
OK → http://www.example.jp/hoge/

http://www.example.jp/hoge でアクセス(最後のスラッシュを付けない)すると
http://example.jp/hoge/ となってしまうのはなぜ?
Apacheの設定?

A 回答 (3件)

http://www.example.jp/hoge
としたときに通常はhogeというファイルがないので
404エラーを返すところ、301エラーでフォルダ情報をかえしてきます。
このときhttpd.confで指定されたServerNameを利用するので
その設定をしておかないといけません。

telnetでポート80にアクセスして手動でhttpの通信をトレースすると
挙動が理解できます
    • good
    • 0
この回答へのお礼

理由は理解できました。ありがとうございます。

telnet で確認しましたが、301 を見ることは出来ませんでした。
(普通に 404 のページが見えるだけ)
やり方がまずかったのかな?
私のやったログ
% telnet www.example.jp 80
GET /hoge[Enter]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>404 Not Found</TITLE>
</HEAD><BODY>
<H1>Not Found</H1>
The requested URL /webmail was not found on this server.<P>
</BODY></HTML>
Connection closed by foreign host.


あと、少し話しはソレますが、
http://www.example.jp/

http://example.jp/
を受付けるようにした場合、各々、そのままの形で配下のコンテンツを
見せるのが良いのか?
それとも http://example.jp/http://www.example.jp/
変換して、以降をブラウジングさせるのか?
が疑問になりましたが、この件に関しては知識不足なので勉強して出直してきます。
(アドバイス頂ける事に越した事は無いですがヒント頂ければ幸いです)

お礼日時:2009/01/26 15:39

>telnet で確認しましたが、301 を見ることは出来ませんでした。



その、www.example.jp というのはサーバーの本名ですか?複数のホスト名が付いていて、VirturalHost機能で複数のサイトをサービスしている場合、お書きのアクセス(HTTP/0.9)だと本名のホストとしてのアクセスになります。
その場合は、HTTP/1.1でアクセスします。

GET /hoge HTTP/1.1
Host: www.example.jp
(空行)
    • good
    • 0
この回答へのお礼

ありがとうございます。

仰るとおり、VirtualHost です。
telnet の確認もOKでした。
さすが、「自信あり」の回答ですね。

高度なスキルを持った notnot 様、ならびに yambejp 様、
ありがとうございました。

お礼日時:2009/01/27 09:55

>(普通に 404 のページが見えるだけ)


>やり方がまずかったのかな?

不安になって、ちょっと試してみましたが、私の環境では
Apache1.3系も2系も301エラーが返ってきてますね
環境依存の可能性は否定できませんが、特に設定をしなければ
301エラーを返すのがデフォルトだったと記憶しています

www.example.jpとexample.jpはサブドメインが異なるので、
一意性をたもつためにも完全に分けた方が間違いないのでは?
(仮にDNSがまじめに同じAレコードをかえしたとしても)
とくにクライアント側から見れば、キャッシュするファイルや
cookie情報などすべて別で管理されるのですから・・・。

あるいみexample.jpでアクセスされても返答しないくらいの
設定が好ましいような気がします。
    • good
    • 0
この回答へのお礼

> とくにクライアント側から見れば、キャッシュするファイルや
> cookie情報などすべて別で管理されるのですから・・・。

なるほど。気付きませんでした。

> あるいみexample.jpでアクセスされても返答しないくらいの
> 設定が好ましいような気がします。

ふむふむ。後は好みの問題になるのかな。
私の場合は example.jp でアクセスされたら www.example.jp にリダイレクト
が良いかな。(「同一のドメインのサイトにアクセスしに来た」という観点で)

ともあれ、大変勉強になりました。ありがとうございます。謝々。

お礼日時:2009/01/27 09:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!