こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

投稿日時 - 2009-11-26 09:40:23

QNo.5476972

困ってます

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

「最後のスラッシュ」にも二通りあります。
(a) http://example.comhttp://example.com/ のようにホスト名だけの場合は全く同じ意味です。スラッシュを付けないとアクセスできないというのはおかしい。時間を特定してログを確認してください。もし再現性がないようなら、その人のタイプミスや勘違いかもしれません。

(b) http://example.com/aaaahttp://example.com/aaaa/ のように、パス名が付いているときは、URLとしては本来別のものになります。
サーバーによっては、http://example.com/aaaahttp://example.com/aaaa/ で別のページを返すこともあり得ます。

一般的な設定では、http://example.com/aaaa が存在せず、http://example.com/aaaa/ が存在するときに、http://example.com/aaaa に対してアクセスするとページ無しのエラーを返さずに、http://example.com/aaaa/ をアクセスし直せという指示の応答が返り、ブラウザか自動的にもう一度 http://example.com/aaaa/ でアクセスし直します。

>(2)最後にフラッシュを付けないでアクセスしてページが表示されないエラーが出た場合、サーバーのログ(Apacheログ)に何か記録されますか?

記録されます。

>http.confのUseCanonicalNameがOffになっているのが原因かと思いましたので、とりあえずOnに変更みました。

この設定は、ホスト名の話なので、スラッシュには関係ないです。バーチャルホストを使っているのにonにしてしまうと不都合が起こるかもしれません。offがいいでしょう。

投稿日時 - 2009-11-26 22:00:39

お礼

ご回答ありがとうございましたm(__)m

確かに、私もスラッシュでアクセスできないような事を聞いたことも経験した事もありませんにので、タイプミスかな?と思ってたのですが…

少しログを見てみます。

>この設定は、ホスト名の話なので、スラッシュには関係ないです。バーチャルホストを使っているのにonにしてしまうと不都合が起こるかもしれません。offがいいでしょう。

ありがとうございます!
UseCanonicalNameをOnにしていたのですが不安だったので、仰るとおりOffにしておきます!
ありがとうございましたm(__)m

投稿日時 - 2009-11-27 11:00:36

ANo.4

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

バーチャルドメインで運用なさっているそうですから、その設定いかんで、サーバまで到達しているけど404以外のエラーになることはあり得ます。

Apacheのログを見てください。ログは出力されていますか?
されているようでしたら、ご提示ください。

投稿日時 - 2009-11-26 16:32:02

お礼

ご回答ありがとうございますm(__)m

ログを見ているのですが、それらしいものが見つからないんです(>_<)

もうちょっと探してみます!

ありがとうございましたm(__)m

投稿日時 - 2009-11-27 11:10:43

ANo.2

まず蛇足ですが, あなたが abc.net の管理者でないのであればそのようなドメインを例示するのはよくありません. 「例示のために予約されたドメイン」として example.* がありますので, これを使ってください.
URL の書き方としては「http://www.example.net」と「http://www.example.net/」の両方が認められています. そして, この最後のスラッシュは省略しても同じ意味になります. だから, ユーザエージェントによっては勝手に補完するかもしれないししないかもしれません. いずれにしても本来はサーバがよろしく対処しなければならないです.
ほかのところ, 例えば http://www.example.net/directory/ における最後のスラッシュは省略すると意味が変わります. この場合は省略すると
http://www.example.net/directory でアクセスする
・「そんなのないけど http://www.example/net/directory/ じゃないの?」と返される
・改めて http://www.example/net/directory/ でアクセスする
というプロセスになるんだったかな?

投稿日時 - 2009-11-26 11:25:47

お礼

ご回答ありがとうございますm(__)m

ドメイン名の件、失礼しましたm(__)m
仰られるように、確かに存在し得るドメインを例として出すのはいけない事ですね…すみません。

ユーザーエージェント側って事は、やはりブラウザとかの問題なのでしょうか…

投稿日時 - 2009-11-27 11:13:23

http://abc.net
とアドレスを打ち込むと
http://abc.net/
にアクセスしなおして表示してくれるのはサーバと関係なく、クライアントのブラウザが勝手にそうしてくれているだけです。

>(1)環境やパソコンによって最後のスラッシュが必要だったり、無くてもページが表示されたりと、挙動が異なるものなのでしょうか?

そういうことになります。

>(2)最後にフラッシュを付けないでアクセスしてページが表示されないエラーが出た場合、サーバーのログ(Apacheログ)に何か記録されますか?

サーバのエラーではないのでログには出ません。(サーバにアクセスがあってページが見つからない場合なら404が出ますが、サーバまで到達していないはずなので)

投稿日時 - 2009-11-26 11:02:32

お礼

ご回答ありがとうございますm(__)m

やはりブラウザの問題ですか…
環境の問題であれば、私としてはどうしようもありませんね(^-^;)
この件は、もう少し様子を見てみようと思います。

ありがとうございましたm(__)m

投稿日時 - 2009-11-27 11:14:52

あなたにオススメの質問