33

インターネットを閲覧していたところ、たとえばYouTubeには、ビデオページを示す次のようなURLが含まれていることに気付きましたhttp://www.youtube.com/watch?v=gwS1tGLB0vc

私のサイトでは、トピックページに次のようなURLを使用していますhttp://www.example.com/page.php?topic_id=6f3246d0sdf42c2jb67abba60ce33d5cc

違いは、YouTubeにファイル拡張子がないことにまだ気付いていない場合は、ウォッチページにファイル拡張子がないので、なぜ一部のサイトでファイル拡張子が使用されていないのか、どのような用途に使用されているのでしょうか。

4

13 に答える 13

38

URI(したがってURL)は実装から独立している必要があるという考えから、ファイル拡張子は使用されていません。食品の安全性に関するCDCの情報にアクセスする場合は、 https://www.cdc.govにアクセスできるはずです。 / foodsafety(たとえば)。CDCのサーバーがPHP、Python、Perlのいずれを使用しているかはエンドユーザーにとって重要ではないため、エンドユーザーには表示されません。Webページを提供するすべての言語が同じHTML、CSSなどを出力し、ユーザーはWebブラウザーでページを表示しているだけなので、エンドユーザーはページがどのように生成されたかを気にしません。

ほとんどのWebフレームワークは、まさにこの理由で、デフォルトでこの機能を組み込んでおり、ほとんどのWebサーバーでのURLの書き換えに関係なく実現できます。この理想は、W3Cスタイルガイドに体系化されています。このガイドは、このアイデアが非常に広く受け入れられていることの大きな支持者であることは間違いありません。それは彼らのガイド「クールなURIは変わらない」で概説されています。それでもここでの理由を完全に理解していない場合は、問題を解決するはずです。そのドキュメントは、この問題に関する頼りになる声明であり、フレームワークの事実上の標準です。

通常、ダウンロードされるファイル(および場合によってはAJAXで使用されるデータファイル)のファイル拡張子はそのままであることに注意してください-http ://example.com/song.mp3またはhttp://example.com/whitepaper .pdf-ファイル拡張子が重要なエンドユーザーのコンピューターに保存することを目的としているためです。単に表示されるページ(ほとんどのページ)には、拡張機能は含まれていません。

追記:この回答が元々リンクされていたサンプルページは、ベストプラクティスにもかかわらず、URIが変更されることがあるため、ある時点で存在しなくなりました。私はそれをCDCの食品安全ページに置き換えました。これは少なくとも20年前から何らかの形で存在しています。間違いなく、何年にもわたって多くの異なるテクノロジーがそのコンテンツを提供してきましたが、常にまったく同じURLで提供してきました。

于 2010-09-02T21:03:59.950 に答える
14

表示されているのは、URLルーティングの例です。サーバーは、特定のファイル(page.phpなど)を指す代わりに、実際にhtml(または返されたmimeタイプに応じて他のもの)をレンダリングするハンドラーに要求を転送するルーティングテーブルまたは構成を使用しています。お気づきの方もいらっしゃると思いますが、StackOverflowは同じメカニズムを使用しています。

于 2010-09-02T20:55:03.117 に答える
7

拡張子があるかどうかは関係ありません。ブラウザは、URLで使用されている拡張子ではなく、サーバーから返されたMIMEタイプに基づいて動作します。

于 2010-09-02T20:53:09.597 に答える
6

「なぜ?」と尋ねると 技術的な理由または設計上の理由を求めていますか?すでに技術的な回答をいただいている方もいらっしゃるので、デザインについてコメントさせていただきます。

基本的には、URLがエンドポイントであるということになります。これは、ユーザー/サービスが到達する必要がある場所です。ほとんどの場合、拡張子は関係ありません。ユーザーがWebを閲覧していて、 http://site.com/usersにアクセスしている場合、ユーザーのリストを期待しています。彼はそれが.htmlや.phpを言っていないことを気にしません。そして、これらの拡張機能を使用するデザイナーとしては、実際には意味がありません。アプリに意味を持たせたいのですが、これらの拡張機能は、ユーザーが必要とする洞察を実際には提供していません。

それらを使用したいのは、他のアプリケーションが使用するサービスを作成している場合でした。次に、拡張子を使用して、返されると予想されるデータの種類(.json、.xmlなど)を示すことができます。このようなものの設計ガイドラインと仕様に取り組んでいる人々がいますが、それはすべて初期段階です

基本的に、これらの拡張機能が使用されます。これは、Webサーバー/クライアントがデフォルトで機能するためです。Web開発が成熟するにつれ、私たちはurlをより専門的に扱い始め、それらを読んだり使用したりする人々にとって意味のあるものにしようとしました。

于 2010-09-02T21:01:02.557 に答える
5

拡張機能はブラウザには関係ありません。ブラウザに渡されたヘッダーを使用して、表示する内容と表示方法を決定するだけですが、サーバー上では拡張機能が重要である可能性があります。たとえば、ボックスにphpとrubyインタープリターの両方をインストールできますが、Webサーバーにはファイル拡張子をMIMEタイプにマップするための構成ファイルがあります。たとえば、Apacheのphp5.confから:

  AddType application/x-httpd-php .php .phtml .php3

これは、.php、.phtml、および.php3で終わるファイルがPHPファイルとして認識される必要があることをApacheに通知します。

ただし、拡張機能はクライアントにとって何の意味も持たないため、拡張機能がないとURLは「より洗練された」ものに見えることがよくあります。そのために、Apacheなどのテクノロジーをmod_rewrite使用して、クライアントランドのURLをサーバー上で意味を持つように「書き換え」ることができます。

たとえば、ApacheがリクエストをPHPスクリプトに適切にルーティングするために使用できる、のようなURL (見栄えがよく、入力と記憶が簡単)をmod_rewrite書き換えるルールを設定できます。http://yourblog.com/article/the-article-you-wrotehttp://yourblog.com/articles.php?title=the-article-you-wrote

于 2010-09-02T21:07:58.903 に答える
2

キーはHTTP応答ヘッダーのContent-Typeフィールドです。そんな感じ:

HTTP 200 OK
Content-Type: video/flv
Content-Length: 102345

DATA-DATA-DATA-DATA-DATA-DATA-....

参照:

Content-Disposition: attachment; filename=genome.jpeg;
     modification-date="Wed, 12 Feb 1997 16:29:51 -0500";

詳細: http: //en.wikipedia.org/wiki/MIME

于 2010-09-02T20:52:51.483 に答える
2

ええと、ファイル拡張子はインターネット上では何の役にも立ちません。ブラウザはファイル拡張子が何であるかを気にしません。CSSファイルを.aviとして提供できます。では、単純に省略してみませんか?これにより、URLを短くすることができます。

さらに、URLを「書き換える」ことで、より読みやすいURLが可能になります。あなたは理解できないかもしれません/categories.php?id=455が、あなたは理解しています/455-some-category

これを自分で行いたい場合で、Apacheを使用している場合は、mod_rewriteを参照してください。

于 2010-09-02T20:58:05.437 に答える
2

URLは、ユーザーインターフェイスの一部と適切に見なす必要があります。そのため、ユーザーがサイトのどこにいるか、およびサイトの構造に関する情報を伝達するように設計する必要があります。

次のようなURL:

mysite.com/sport/soccer/brazil_wins_worldcup

サイトの構造と現在の場所についてユーザーに多くのことを伝えます。対照的に:

mysite.com/article.php?cateogry=12&articleid=371

役に立たない代わりに、無関係な実装を公開します-サイトの作成に使用される言語や、その記事のID(そのIDの下のデータベースに保存されている可能性が高い)などの詳細

この倫理的な議論に加えて(ユーザーを無関係な実装の詳細にさらさないでください)、サイトを将来にわたって利用できるようにするのにも役立ちます。なぜなら、最初から選択した言語を公開したことがない場合は、後でRubyまたはPythonにアップグレードできます。そのため、世界中のすべてのリンクがリンクされていなくても、現在は404になっています。

ユーザーにとって意味があり、将来にわたって利用できるようにURLを設計します。

于 2011-04-29T12:20:40.070 に答える
1

これには多くの可能な答えがあります。Webブラウザが解釈する結果となるのは、Webアプリケーションサーバーの構成方法です。URLの書き換えまたはルーティングを使用している状況や、他の人が言っているように、要求されたURLまたは拡張子に提供しているハンドラーが存在する可能性があります。

「 http://cory.com/this/really/doesnt/exist 」のようなURLを使用して、必要に応じて実際に「http://cory.com/this.does.exist.123 」を指すようにすることもできます。に。

于 2010-09-02T20:56:35.047 に答える
1

Webサーバーの通常の動作は、要求されたURIパスをドキュメントルートディレクトリ内のどこかのファイルにマップすることです。したがってhttp://example.com/foo/bar、単純ににマッピングされます/path/do/document/root/foo/bar。さらに、Webサーバーはファイルの処理方法を知っている必要があります。これは多くの場合、ファイル名拡張子によって行われます。したがって、ファイル名拡張子.phpが付いたファイルは、PHPインタープリターによって処理されます。

現在、この通常の動作とは別に、ほとんどのWebサーバーには、マッピング(つまり、URLの書き換え)とファイル名拡張子のないファイルの処理方法の両方を変更できる機能があります。

Apache Webサーバーの場合、前者はmod_rewriteで実行できます。

RewriteEngine on
RewriteRule ^/watch$ /watch.php

そして後者はmod_mimeで行うことができます:

<File watch>
    ForceType application/x-httpd-php
</File>

(実際、これはmod_mime機能ではなく、コア機能です。)

于 2010-09-02T21:01:29.093 に答える
0

規則:ファイル拡張子はURIに含めないでください

Webでは、ピリオド(。)文字は通常、URIのファイル名と拡張子の部分を区切るために使用されます。REST APIは、メッセージのエンティティ本文の形式を示すために、URIに人工的なファイル拡張子を含めないでください。代わりに、Content-Typeヘッダーを介して伝達されるメディアタイプに依存して、本文のコンテンツを処理する方法を決定する必要があります。

(1)http://api.college.restapi.org/students/3248234/transcripts/2005/fall.json (2)http://api.college.restapi.org/students/3248234/transcripts/2005/fall

(1)ファイル拡張子はフォーマット設定を示すために使用されるべきではありません。(2)REST APIクライアントは、HTTPが提供するフォーマット選択メカニズムであるAcceptリクエストヘッダーを利用するように奨励する必要があります。参照:RESTAPIルールブックの設計

于 2015-12-18T08:50:07.023 に答える
0

その下で、.htaccessで使用して、HTMLまたはPHP拡張子がなくてもURLが正しく実行されるようにします。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f

これは、ブラウザで指定された名前のファイルがWebサーバーのディレクトリ(-d)またはファイル(-f)と一致しない場合は、以下のルールを書き換えることを意味します。

RewriteRule ^(.*)$ $1.html

以下がどのように機能するかはわかりませんが、htmlで書き直した後、それでも一致しない場合はphpで書き直してください。

RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

それでも一致しない場合は、404ページが表示されます。

以下の.htaccessのコードで404をリダイレクトすることもできます

ErrorDocument 404 /404.html

重要なのは、コードが私のサイトで機能していることです。

http://mintnet.net/services

http://php.mintnet.net/home

それらはファイル拡張子を必要としません。

于 2017-04-04T19:47:18.270 に答える
-4

「www.youtube.com/watch」はYouTubeのディレクトリです。したがって、基本的には「www.youtube.com/watch/」と書くことができ、末尾にスラッシュが付いています。

于 2011-05-30T23:24:06.410 に答える