web-dev-qa-db-ja.com

URLパスでドットはどういう意味ですか?

jQuery Ajaxの問題に関する質問 で、質問者は.を相対URLの先頭に追加します。私は彼にそれを削除するようにアドバイスしましたが、ドットが実際にそこで何をするかわかりません。

彼の相対URLは次のようになりました。

./delete-misc/test-ajax-code.php

RFCを調べてみましたが、成功しませんでした。コマンドライン(LinuxまたはWin)でドットが何をするか知っています。現在のディレクトリを表しています。

知りたいのですが、これはインターネット上のURLでどのように機能しますか?ベストプラクティスの用途はありますか?詳細な説明は大歓迎です。

36
kapa

パスセグメント. は通常、相対パス参照の最初に使用され、 参照解決 の間に削除されます。つまり、相対URI参照を解決するプロセス絶対URI:

パスセグメント「.」および「..」は、ドットセグメントとも呼ばれ、パス名階層内の相対参照用に定義されます。これらは、名前の階層ツリー内の相対位置を示すために、相対パス参照( セクション4.2 )の先頭で使用することを目的としています。これは、現在のディレクトリと親ディレクトリをそれぞれ示す、一部のオペレーティングシステムのファイルディレクトリ構造内での役割に似ています。ただし、ファイルシステムとは異なり、これらのドットセグメントはURIパス階層内でのみ解釈され、解決プロセスの一部として削除されます( セクション5.2 )。

これらのドットセグメントが特定のベースパスコンテキストでどのように解釈されるかを説明する Remove Dot Segmentsalgorithm があります。

あなたの場合、./delete-misc/test-ajax-code.phpdelete-misc/test-ajax-code.phpはどちらも同等です。ただし、相対パスが絶対URIとして誤って解釈される場合があります。前者は絶対URI、後者は相対URIパスであるため、:とは異なり、search:fooのような最初のパスセグメントに./search:fooがあります。

37
Gumbo

URLの前の./は、現在のパスに相当します。したがって、./delete-misc/test-ajax-code.phpdelete-misc/text-ajax-code.phpはどちらも相対パスです。投稿した回答では、ドットのみを削除するように要求されたため、/delete-misc/test-ajax-code.phpのパスは、相対パスではなく絶対パスとして変換されます。

編集:もう1つ-.は現在のディレクトリであり、..は親ディレクトリです。 phihagがコメントするように、これらはコード内で実際に回避および保護する必要があります。ディレクトリトラバーサルは悪に利用できます。

6
Michael Dean