Amazon.com を見ると、ページの URL が表示されますが、URL の末尾に.htm
,.html
またはがありません。.php
次のようなものです:
http://www.amazon.com/books-used-books-textbooks/b/ref=topnav_storetab_b?ie=UTF8&node=283155
なぜ、どのように?それはどのような拡張子ですか?
Amazon.com を見ると、ページの URL が表示されますが、URL の末尾に.htm
,.html
またはがありません。.php
次のようなものです:
http://www.amazon.com/books-used-books-textbooks/b/ref=topnav_storetab_b?ie=UTF8&node=283155
なぜ、どのように?それはどのような拡張子ですか?
ブラウザはファイルの拡張子を気にせず、サーバーが報告するコンテンツ タイプだけを気にします。(ええと、IE を使用しない限り、Microsoft では、あなたが何を提供しているかについて、あなたよりもよく知っていると彼らは考えているからです)。提供されているコンテンツが Content-Type: text/html であるとサーバーが報告した場合、ブラウザは、ファイル名に関係なく、それを HTML のように扱うことになっています。
通常、これは何らかの説明の URL 書き換えスキームを使用して実装されます。基本的な考え方は、Web は適切な URI を使用してリソースをアドレス指定するように移行する必要があるということです。実装の詳細が漏洩し、結果として将来の変更に対して脆弱な従来の古い URL ではありません。
このトピックの徹底的な議論は、Tim Berners-Lee の記事Cool URIs Don't Changeで見つけることができます。これは、実装が変更されたときに発生する問題を回避するのに役立つ手段として、URI の無関係なクラフトを削減することを支持していると主張しています。リソースが別の URL に移動したとき。この記事自体には、URI スキームの計画に関する一般的なアドバイスが含まれており、一読の価値があります。
これらの回答のほとんどよりも具体的に:
Web コンテンツは、提供されているファイルの種類を判断するためにファイル拡張子を使用しません (Internet Explorer を使用している場合を除く)。代わりにContent-type
、画像、HTML ページ、ダウンロードなどのコンテンツの前に送信される HTTP ヘッダーを使用します。例えば:
Content-type: text/html
表示しているページを HTML として解釈する必要があることを示します。
Content-type: image/png
ページが PNG 画像であることを示します。
ファイルがディスクから直接提供される場合、Web サーバーはしばしばファイル拡張子を使用して何を割り当てるかを決定Content-type
しますが、Web アプリケーションはContent-type
要求に応じて好きなページを生成することもできます。ファイル名の構造や拡張子に関係なく、ページの実際のコンテンツが宣言された と一致する限りContent-type
、データは意図したとおりにレンダリングされます。
Apache を使用する Web サイトの場合、おそらく mod_rewrite を使用して、URL を書き換えることができます (そして、よりユーザーと SEO フレンドリーにすることができます)。
ここで詳細を読むことができますhttp://httpd.apache.org/docs/2.0/mod/mod_rewrite.html と ここhttp://www.sitepoint.com/article/apache-mod_rewrite-examples/
EDIT : IIS 用の書き換えモジュールもあります。
従来、ファイル拡張子は提供されているファイルを表します。
例えば
その後、スクリプトがパラメーターを処理できるようにするために、同じアプローチが使用されました
http://somerverser/somepath/script.php?param=1234&other=7890
この場合、ファイルは「リクエスト」を処理する php スクリプトであり、動的に作成されたファイルを提示します。
現在、アプリケーションはそれよりもはるかに複雑です (つまり、あなたが言及した amazon )。
次に、リクエストを処理する単一のスクリプトはありません (ただし、いくつかのファイル/メソッド/関数/オブジェクトなどを備えたはるかに複雑なアプリ)、URL は Web アプリケーションのエントリ ポイントに似ています (背後にスクリプトがある場合があります)。しかし、それは別のことです)だから今、Amazonのようなウェブアプリ、そしてはいstackoverflowはURLにファイルを表示しませんが、来るものはすべてサーバー側のアプリによって処理されます.
ここで、質問は webapp を表し、 322747はパラメーターを表します
この小さな説明が、他のすべての回答をよりよく理解するのに役立つことを願っています.
ディレクトリに index.html ファイルがあり、そのパスをブラウザに入力するのはどうでしょうか。私の Firefox と IE7 はどちらも末尾のスラッシュを自動的に挿入するので、入力する必要はありません。これは、数キロバイトのデータを送信するためだけに、地球上のすべての URL で php、perl、cgi、およびその他の 10,000 のアプリケーションを起動する必要があるとは考えていない、私のような人々により適しています。
多くの投稿でこれについて言及されているので、私も検討します。これは完全に URL 書き換えシステムであり、多くのプラットフォームでこれを実装する方法があります。
私はいくつかの大規模な e コマース サイトで働いてきましたが、現在では Web プレゼンスの非常に重要な部分であり、多くの利点があります。
使用したいテクノロジを選択し、そのプラットフォームの URL 書き換えメカニズムのサンプルを調査することをお勧めします。たとえば、.NET の場合、「asp.net url rewriting」をグーグルで検索するか、MVC などのアドオン フレームワークを使用して、この機能をすぐに使用できるようにします。
多くの人が、より「RESTful」なタイプのアーキテクチャを使用しています... または少なくとも、REST に見える URL を使用しています。
このサイト (StackOverflow) にはファイル拡張子が表示されません... ASP.NET MVCを使用しています。
サーバーの設定に応じて、必要な拡張機能を使用する (または使用しない) ことができます。拡張子を「.JamesRocks」に設定することもできますが、あまり役に立ちません:)
とにかく、Web プログラミングに慣れていない場合に備えて、ページの拡張子ではなく、GET 操作への引数があります。
Django (Python 用の Web アプリケーション フレームワーク) では、ファイル名やサーバー上のパスに関係なく、自分で URL を設計します。
/news/<number>/
「この関数でURLを処理したい」のように言うだけです