
絶対パスとフルパスの違いがイマイチわかりません。
絶対パスというのはいわゆるURLのことで、URLというのはフルパスの省略されたもの、ということでいいのでしょうか。
普通にパソコンのブラウザからフルパスを使ってアクセスすると、サーバーにある関係ない情報まで見ることが出来てしまうので、指定した目的以外のフォルダをApachにより省略していわゆる普通のURLにするということですか?
また、指定したフォルダを省略するためのApachとはどのようなものでしょうか。
http://www.chama.ne.jp/download/web/path.htm
No.2ベストアンサー
- 回答日時:
その説明、誤解を産むといいますか、一般の意味を拡張しているといいますか、あまり正確ではありません。
パスというのは、AからBまでの道順でのことです。
コンピュータでは、単にパスと言った場合、あるファイル/ディレクトリから、他のファイル/ディレクトリまでの道順(ディレクトリの移動順)を示した「ファイルパス」「ディレクトリパス」のことを指すことが多いです。
ファイル/ディレクトリは、それ以上戻れない「一番上」が唯一存在して、そこから枝分かれして階層状になっています。このような構造を「木」といって、その「唯一の一番上」をルート(根)といいます。
(厳密な木/根の定義は省略します。 さらに厳密に言えば、ディレクトリ構成は木ではありませんが、木として続けます)
Windowsで言えば、マイコンピュータという根があり、そこから C:\,D:\..と枝分れして、C:\は更にProgram Files, Windowsと枝分かれ....となっています。
このファイルパスの表現として、
現在位置を基点にした「相対パス」
ルートを基点とした「絶対パス」、あるいは(省略しているように見える相対パスに対して全部書いているように見えるので)「フルパス」
があります。
その文章のややこしいところは、ルートの異なる2つの木を、あたかも一つの木のように説明しようとしていることです。
その文章で「絶対パス」として紹介しているのは、「Windowsのファイルシステムの木」での「絶対パス」のことです。
その文章で「フルパス」として紹介しているのは、「httpサーバー上でのURLの木」での「絶対パス」のことです。
httpサーバーというのは、httpリクエストに応じてデータを返すプログラムです。
ブラウザが、http:~でデータをやりとりする相手はhttpサーバーであって、直接ファイルにアクセスするわけではありません。
一般的なhttpサーバーでは、標準の動作として、コンピュータの適当なディレクトリをhttpサーバーにとってのルートとして、その下にファイル構成をそのままURLの構成にしています。
ちょうど、ファイルシステムの木にhttpサーバーのヤドリギがあるようなものです。
そのURLを使ったリクエストがあったら、対応するファイルの内容をそのまま返信します。
(「省略して云々」というのは初心者向けの説明(のつもり)なのでしょうが、正確ではありません。そのために混乱が生じているのでしょう)
このとき、URLの相対パスは、ファイルのそれと一致します。
URLの絶対パスは、「ヤドリギの根」からのパスになります。ファイルシステムの根からではありません。よって、ファイルシステムの絶対パスとは違うものになります。
htmlでのhref=~や、ブラウザ等でURLを指定する場合、httpサーバーが管理するのはhttpの木なので、ファイルシステム用の絶対パスではなく、URL用の絶対パス(ヤドリギでのパス)で書く必要があります。
... ということなのです。
ちなみに、まともなhttpサーバーだったら、例にあるような「ファイルシステムの絶対パス」を書いたところで、「そのURLを見たら『サーバーのファイルシステム上に、そのパスのファイル/ディレクトリが存在する(可能性がある)』という情報が漏れる」以外の被害はまずありません。
これでファイルシステムにアクセスできるようなサーバーなら「重大な脆弱性あり」として公表されていることでしょう。
「Apache」は httpサーバーの一種で、大きなシェアを占めています。
非常に分かりやすい説明ありがとうございます!
私たちが普段目にするURLはヤドリギからのパスだったのですね。
すっきりしました。
No.3
- 回答日時:
個人的には、
「絶対パス」「相対パス」
は同じ次元「絶対」と「相対」、
で考えていいですが、
「フルパス」に対応するのは「パス」のような気がします。
だから
「フルパス」
というのをこの上記2つと並べて、という説明は違和感あります。
(表記されている状態は同じとしても)
「絶対パス」と「相対パス」
「フルパス」と「パス」
で整理して考えてみてはどうでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
FTPでputすると空ファイルが出...
-
どんなプログラムを書いても指...
-
「UNCパスはサポートされません...
-
フルパスから最後のディレクト...
-
絶対パスの絶対て英語で何でし...
-
ExcelVBAでカレントディレクト...
-
webアプリケーションでの画像フ...
-
C++でOpenCV コンパイルでエラー
-
C言語初心者の質問失礼します。
-
バイナリ形式のXMLファイルを読...
-
C言語でBMPファイルの内容を表...
-
vba ActiveSheet.pasteを使った...
-
OpenDialog1->FileNameについて
-
LSI C-86 v3.30c 試食版について
-
SWTとSwingの違い
-
ファイル形式またはファイル拡...
-
dataファイルをxtxファイルにす...
-
VB.NETで他のプロジェクトで作...
-
バッファとは何ですか
-
VB6.0で作ったプロジェクトが起...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
どんなプログラムを書いても指...
-
フルパスから最後のディレクト...
-
絶対パスの絶対て英語で何でし...
-
FTPでputすると空ファイルが出...
-
「UNCパスはサポートされません...
-
fopenで別ディレクトリにファイ...
-
ExcelVBAでカレントディレクト...
-
windows.hがincludeされない
-
セルに入力されたパスでフォル...
-
ExcelVBA サーバーの(共有フォ...
-
ファイルダイアログのカレント...
-
ネットワーク上のコンピュータ...
-
GetPrivateProfileStringでini...
-
ファイルやディレクトリの存在...
-
マイクラでPythonのプログラミ...
-
C言語を用いたファイルの一括削...
-
webアプリケーションでの画像フ...
-
FTPでリモートのファイル一覧取得
-
圧縮(Zip)について
-
CFileDialogを使用して、Pathを...
おすすめ情報