- 締切済み
Webページのファイル名の末尾
ネット上のWebページのURLを見ると、 http://japan.jp/about のように、ファイル名の末尾が/でもなく、拡張子でもないものに出会うことがあります。 あれって、aboutディレクトリにindexファイルが格納されており、aboutに行くとindexに自動的に飛ぶということなのでしょうか? (つまり、about/index.(拡張子)と書いてもよいのだがaboutで済ませているのか?) 上記が正しいとして、 http://japan.jp/about/ のように、/を末尾につけなくてよいものなのでしょうか?(むしろつけないほうがよい?)
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- play_with_you
- ベストアンサー率37% (112/301)
まあ、マルチなんだろうけど、 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12114678932 こちらの回答をどうぞ。 上記の知恵袋のURLもそうだし、例えば2ちゃんねるのスレッドのURLもそういう感じですね。 フィレオフィッシュバーガーだけど質問ある? http://hayabusa.2ch.net/test/read.cgi/news4vip/1381282625/ 「rad.cgi」に「/news4vip/1381282625/」というパラメータが渡され、処理されてスレッドが表示されます。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
サーバーから送られてくるデータは、ヘッダーと本体になっています。これはどのネットワーク上の通信も同じです。 (Windows以外は内部での転送もほぼ同じです。) そのディレクトリにあるこの条件に合う物はこの様に処理しろと指定できるOSがほとんどです。拡張子が.htmlならプログラムとして処理しろとか、HTMLと処理しろとか、abcで始まるすべてのファイルはこうしろとか)。Windowsだけが特殊なのです。 HTTPサーバーは、HTTPリクエストで、URIを受け取るとします。分かりやすいので例を示します。 極めて単純な機械的処理をしているだけです。 GET: /abc/efg/hij?klm ←(ブラウザはhttp://hoge.com/abc/efg/hij?ABC#EFG #以降は送られない) 1) ?移項[klm]はQuery_Stringと言われるものでサーバー側での処理に使用されます。 サーバーは、環境変数QUERY_STRINGに格納 2) hijがファイルならhijを処理します。(※1後述) hijがディレクトリなら、それを開いて[指定されて処理を行います] a) ディレクトリ一覧を表示なら、ファイルの一覧を表示(最近は少ない) b) 特定のファイルを処理する指定(※2後述)があればそれに従う c) ファイル名の指定がない場合は404(Not Found)を返す。 3) hijがファイルでもディレクトリでもないときは環境変数PATH_INFOに格納して efgについて(2)の処理を繰り返す。 4) efgがファイルでもディレクトリでもないときは環境変数に/efgを格納して abcについて(2)の処理をします。 5) 最後に/について同様・・ ※1)処理について そのディレクトリについて、そのファイルはHTMLやtextとして処理すると指定されていれば、そのまま送信する。(デフォルトはtext/plainです) ※2)について 実行ファイルとして処理する指定なら、実行プログラムに引き継ぐ。実行したプログラムが応答ヘッダに text/htmlとすれば、ブラウザはHTMLとして受け取る。image/jpegなら画像と言う風に拡張子は関係ない!! 【実装】 ・PATH_INFOは、ふるくから、とてもたくさん使われています。量的には最も多い 新聞社の記事 Wikiの記事 この掲示板「okWeb」や「教えて!goo」など などは、PATH_INFOと考えて良いでしょう。いちいちページを作らなくても動的に作成されるので楽です。数十ページを越すような大規模なサイトはこれが多い。私も基本これ使ってます。 ・QUERY_STRINGは、掲示板や検索エンジンなど 多くの個人の掲示板 検索エンジン ・ディレクトリ名 上記(2)の処理になります。ワンステップとはいえサーバーに負荷がかかるので他人に示すときは/や、/index.htmlなどを付けると良い。 ★拡張子は一切考えなくて良い。(Windowsしか知らないと間違うけど) [例] http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi の後に任意のものを付けてみる http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi/about http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi/about/ http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi/selfless/index.html http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi/?name=selfless すべて、応答ヘッダはtext/htmlなのでHTMLとして処理される。 ★もしURLにファイル名や/がついてなくても、何もせずそのまま利用するのが良い
- kmee
- ベストアンサー率55% (1857/3366)
まず、次の2点に注意しましょう ・ファイル名に .~と拡張子があるとは限らない ・URLに書いてあるものが、実在のファイル/ディレクトリとは限らない HTTPサーバーには、URLを加工して、別の内容として処理する機能があります。 そのURLから、よくあるパターンは (1) about というファイルが実在して、それが送信される。 拡張子はあくまでファイル名の一部であり、拡張子が無いからと言ってファイルではないと決めつけることはできない (2)about というディレクトリが実在して、ディレクトリにアクセスしたら、そのディレクトリのindex.html,default.html等特定のファイルを送信するように設定されている /about → /about/ ディレクトリ → /about/index.html 等となります (3)aboutというファイルもディレクトリも存在しない。 CGI等にパラメータとして渡される /about → /document.php?page=about 等といった変換をします 昔は (2)が多かったのですが、最近は(3)が多いと思われます。 それを考えると、「指定されたそのまま」がよいと思います。