• ベストアンサー

URLでフォルダの最後のスラッシュを省略した時の挙動

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

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

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

naopontan
質問者

お礼

理由は理解できました。ありがとうございます。 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/ に 変換して、以降をブラウジングさせるのか? が疑問になりましたが、この件に関しては知識不足なので勉強して出直してきます。 (アドバイス頂ける事に越した事は無いですがヒント頂ければ幸いです)

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4844/10253)
回答No.3

>telnet で確認しましたが、301 を見ることは出来ませんでした。 その、www.example.jp というのはサーバーの本名ですか?複数のホスト名が付いていて、VirturalHost機能で複数のサイトをサービスしている場合、お書きのアクセス(HTTP/0.9)だと本名のホストとしてのアクセスになります。 その場合は、HTTP/1.1でアクセスします。 GET /hoge HTTP/1.1 Host: www.example.jp (空行)

naopontan
質問者

お礼

ありがとうございます。 仰るとおり、VirtualHost です。 telnet の確認もOKでした。 さすが、「自信あり」の回答ですね。 高度なスキルを持った notnot 様、ならびに yambejp 様、 ありがとうございました。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>(普通に 404 のページが見えるだけ) >やり方がまずかったのかな? 不安になって、ちょっと試してみましたが、私の環境では Apache1.3系も2系も301エラーが返ってきてますね 環境依存の可能性は否定できませんが、特に設定をしなければ 301エラーを返すのがデフォルトだったと記憶しています www.example.jpとexample.jpはサブドメインが異なるので、 一意性をたもつためにも完全に分けた方が間違いないのでは? (仮にDNSがまじめに同じAレコードをかえしたとしても) とくにクライアント側から見れば、キャッシュするファイルや cookie情報などすべて別で管理されるのですから・・・。 あるいみexample.jpでアクセスされても返答しないくらいの 設定が好ましいような気がします。

naopontan
質問者

お礼

> とくにクライアント側から見れば、キャッシュするファイルや > cookie情報などすべて別で管理されるのですから・・・。 なるほど。気付きませんでした。 > あるいみexample.jpでアクセスされても返答しないくらいの > 設定が好ましいような気がします。 ふむふむ。後は好みの問題になるのかな。 私の場合は example.jp でアクセスされたら www.example.jp にリダイレクト が良いかな。(「同一のドメインのサイトにアクセスしに来た」という観点で) ともあれ、大変勉強になりました。ありがとうございます。謝々。

関連するQ&A

  • URLの最後にスラッシュをつけたい

    こんにちは。 URLの最後に「/」をつけたくて、htaccessをいじっているのですが、 なかなかうまくいきません。 今の状況としては以下のとおりです。 http://www.example.co.jp/hoge …(1) 上記をクリックすると http://example.co.jp/hoge/ のようになってしまうので、 これを http://www.example.co.jp/hoge/ のようにしたいと思っています。 ※(1)のURLを押すと、「www」がはずれて「hoge」のあとにスラッシュがついてしまいます。 なにかいい方法はないでしょうか? どうぞよろしくお願いします。

    • ベストアンサー
    • HTML
  • URLの最後のスラッシュ

    いつもお世話になりますm(__)m 素人ながらApache2.0のバーチャルドメインを使い数個のドメインでホームページを公開しております。 今回新しいページを公開し、チラシに「http://abc.net」という表記でアドレスを印刷、配布しました。 最後のスラッシュについて今まで特に考えもせず、何も問題なかったのですが、見に来た方に指摘されました。 http://abc.net とアドレスを打ち込むと、ページが見つかりません。というエラーが出るそうです。 改めて http://abc.net/ と最後にスラッシュを入れると問題なくページが表示されたそうです。 その後は、スラッシュ無しでもページが見れるみたいなのですが、なぜ最初の1回目だけスラッシュ無しだとページが表示されないのでしょうか? ちなみに、数人に確認したところ、ほとんどの方が見れたと仰っており、一部の方が見れなかったそうです。 なぜ一部の人だけ見れないのでしょうか…?? ちなみに、私はいままで最後にスラッシュを付けずにページを見たりしていました。 (これも実はサーバーに負荷がかかるみたいで、申し訳ない事をしてたみたいで反省です) 素人なりに調べた結果、http.confのUseCanonicalNameがOffになっているのが原因かと思いましたので、とりあえずOnに変更みました。 そこで、詳しい方にご教授頂きたいのですが。 (1)環境やパソコンによって最後のスラッシュが必要だったり、無くてもページが表示されたりと、挙動が異なるものなのでしょうか? (2)最後にフラッシュを付けないでアクセスしてページが表示されないエラーが出た場合、サーバーのログ(Apacheログ)に何か記録されますか? 素人がややこしい事を言いますが、なにとぞお力添えのほどお願い致しますm(__)m

  • URLの最後をスラッシュを外して、.htmlにしたい。

    htmlについてです。初心者です。 URLの最後を.htmlとしたいと思っています。 ffftpを使って、フォルダごと入れると.html/になってしまいます。 この最後のスラッシュを外すにはどうしたらいいでしょうか? どこか、設定を変えるのでしょうか? どなたか、教えてください。 (例)http://●●●.com/○○/△△-☆☆.html(このようにしたいです)           ↓    http://●●●.com/○○/△△-☆☆.html/(スラッシュが付いてしまうので外したい)

  • 最後のスラッシュは必要、不要

    このカテゴリで合っているかどうか分かりませんが。 名刺ソフトを使って、社内の名刺を作成しているのですが、 デザイン内に自社のURLを入れていますが、何気なく使っていたのですが、 最後のスラッシュは必要でしょうか?不要でしょうか? どちらでも、自社のページは表示できますが、ふと思ったので。 URL http://www.自社ドメイン URL http://www.自社ドメイン/ 他社から頂く、名刺・年賀状でも最後のスラッシュは入っていたり、入ってなかったりとまちまちです。

  • URL スラッシュ

    www.hoge .com/piyo/***// のような上のリンク先にスラッシュが複数あるURLをクリックしたら、 ホームページが文字だけのサイトに飛ばされました。 末尾のスラッシュが2つある事に気付き、 1つスラッシュを消して再度アクセスしたら、通常通り閲覧できました。 なぜ、文字だけのサイトのような状態になっていたのでしょうか? この現象が起きた場合、HPの更新が出来なくなる事もあるのでしょうか。

  • URLの.html省略について

    現在、サイトを制作しています。 URLについて教えて下さい。 作成ソフト:iWeb サーバー:lolipop ドメインはムームーで取得しました。 http://www.example.com/A.html を「html」を省いて http://www.example.com/A と表示させたいと思っています。 indexのページは検索サイトなどを見て、ルートディレクトリ配下に .htaccessファイルを置き、.htmlを消す事に成功したのですが、 それ以外のページで消す事が出来ません。 どういった方法で消す事が出来るのでしょうか。 _______________ 元々は、全てのページを http://www.example.com で表示したかったのですが、階層についての記述等を読んで試してみてもうまくいかないのであきらめました。。

    • ベストアンサー
    • CSS
  • URL末尾のスラッシュ

    基本的なことだと思いつつも、うまく検索できなかったので質問させてください。 通常URL中の/は、ディレクトリを表しますが、特にブログのトラックバック等でcgiやphpといったスクリプトの後にスラッシュがついているのをみかけます。 (例) http://hoge-hoge.jp/~/trackback.cgi/4 この場合の/は何を意味するのでしょうか。

    • ベストアンサー
    • Perl
  • URLのスラッシュ

    URLの最後にスラッシュのあるものとないものが ありますが この違いはなんですか?   ・・・jp/  また、たまに頭にwwwがないものがありますが 印刷間違いですか? 無いものもあるのですか? 役に立つホームページという書籍を見てて疑問に思いました どなたか教えてください

  • URL バックスラッシュ

    URLのスラッシュを逆向きにアクセスしたら、通常通りアクセス出来た理由は何故なのでしょうか。 事象として、 www.exampleurl .com\○○○\△△△\××× とアクセスをしたら www.exampleurl .com/○○○/△△△/××× とリダイレクトされたというものです。 今回はこの事象のみ確認されましたが、 URLにバックスラッシュが含まれた場合、サイトやサーバに不具合が発生する事もあり得ますか?

  • パラメータの前にスラッシュ

    example.com?hoge=1・・・① example.com/?hoge=1・・・② 上記URLで2種類のURLの違いは何でしょうか。 あるサイトに最初にアクセスした時は example.com/keyword?anyword=hoge の形式でしたが、 本日アクセスしたら、 example.com/keyword/?anyword=hoge の形式で keywordの前にスラッシュが付いたものに変わっていました。 なぜ、このような現象が起きたのでしょうか。 また、上記のURL①と②はアクセスしても同じ検索結果でした。

    • ベストアンサー
    • PHP