質問: **CenntOSで、ドキュメントルートがaディレクトリだった場合** --- **Q1.「/var/www/a/b/c.html」を何と呼ぶのでしょうか?** ・絶対パス ・フルパス ・サーバの絶対パス ・サーバのルートディレクトリからの絶対パス --- **Q2.ドキュメントルートの絶対パスは** ・「/var/www/a/」ですか? --- **Q3.ドキュメントルートからの絶対パスは** ・「/b/c.html」? これは相対パス? ・そもそも、「ドキュメントルートからの絶対パス」という表記自体がおかしい??
回答: 「パス」と言う言葉を使用する際に、「Unix/Linuxのファイルシステム上のパス」「WebサービスにおけるURL上のパス」が混同されているように思います。 ***Q1.「/var/www/a/b/c.html」を何と呼ぶのでしょうか?*** ・絶対パス ⇒そう呼んで問題ないでしょう。 ・フルパス ⇒「絶対パス」に比べるとやや曖昧な使われ方をする時があるのですが、問題ないでしょう。 ・サーバの絶対パス ⇒そのパスがサーバ上のものならば問題ないでしょう。ただし、最初に書いた点をきちんと区別したいのなら、「サーバのファイルシステム上の絶対パス」と言った方が良いでしょう。 ・サーバのルートディレクトリからの絶対パス ⇒「絶対パス」と言うのは、基準なんて示す必要のない絶対的な指定だからこそそう呼ばれるので、「ルートディレクトリからの」と明示するのは冗長な上、逆に意図を不明確にする恐れがありますね。使わない方が良いでしょう。 ***Q2.ドキュメントルートの絶対パスは*** ・「/var/www/a/」ですか? ⇒すでにMyakuさんの回答にもありますが、あなたが(おそらくWebサーバの)「ドキュメントルート」をそのように指定されたのであれば、`/var/www/a/`は絶対パスになっていますから、そう言って良いでしょう。 ***Q3.ドキュメントルートからの絶対パスは*** ・「/b/c.html」? これは相対パス? ⇒この辺りから最初に書いた点に強く関係するのですが、例えば「`http://www.example.com/b/c.html`」と言うURLをWebブラウザのURL欄に打ち込むと、ブラウザは「`/b/c.html`」と言うパスをリクエストに含めて送信します。これはその **Webサービスにおける** 「絶対パス」と呼ばれます。 これを無理にファイルシステム上のパスとして解釈すると、「ルートディレクトリ直下の`b`ディレクトリにある`c.html`」を表すことになってしまいますが、もちろんApacheなどのWebサーバはそんな動作はしません。ドキュメントルートと言うのがWebサービス上のパスをサーバのファイルシステム上のパスに変換するために使用されるわけです。 ・そもそも、「ドキュメントルートからの絶対パス」という表記自体がおかしい?? ⇒Q1に書いた通りでおかしいですね。GETなどのHTTPリクエストに含まれるパスをどう解釈するかと言うのは、各Webサービスによってまちまちで、それをサーバのファイルシステム上の特定のパスに結びつけると言うのは、Apacheなど、静的コンテンツのホストがメインのシステムでは当たり前かもしれませんが、アプリケーションとしての処理がメインのシステムでは「ドキュメントルート」なんて言葉で表されるような特定のディレクトリにマッピングする機能を持たない場合もあります。 とにかく「Webサービスにおけるパス」と「ファイルシステムにおけるパス」とは別物という認識を持たれた方が良いように思います。ネット上の簡易化された解説記事では、「GETリクエストにはドキュメントルートからの相対パスが入る」としているものがあるようですが、あくまで典型的な場合にだけ成り立つ事柄を簡易的に説明している、と思った方が良いでしょう。