人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ディレクトリパスの末尾に、スラッシュは、付けるべきですか?


参考となる URL と合わせてご回答いただけると幸いです。

プログラムを書いてるときにディレクトリのパスをつけるか、どうかで迷います。

つけなかったらディレクトリ、つけたらファイルという分け方ができるので、つけないのが正しいのかなと思っているのですが。

まわりのプログラムを見ると、どうもそうでもなさそうな感じです。

下記の記事も読んだのですが、じゃあ Apache が絡まない場合も、そうだという認識でよいのだろうかと言う疑問もあり、質問いたしました。
[Apache]ディレクトリにはスラッシュを付けるmod_dirの挙動
http://bit.ly/1oAIEq6

1402272843
●拡大する

●質問者: domodomodomo
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● JULY
●400ポイント ベストアンサー

その Apache での挙動に関して、RFC 上にも記述があります。

RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax

上記 URL は、RFC 3986 の「6.2.4. Protocol-Based Normalization」ですが、RFC 3986 はあくまで、URI の表記方法等に関して書いているものであって、パス部で「ディレクトリの時は '/' で終わるべき」といった話は、そもそも RFC の範囲外(「ディレクトリの時は?」というのは、あくまで、HTTP や FTP などのプロトコルに依存する話で、URI 一般の話ではない)で、「3.3 Path」を読んでも、特にそのような決まりは書かれていません。

ですが、上記 URL で、プロトコルによっては、ノーマライゼーションがあるよ、という話で、まさに、「/」で終わらない物を、「/」を付けてリダイレクトする話が書かれています。

この文中に、こんな事が書かれています。

in this case, use of redirection by HTTP origin servers to avoid problems with relative references


「相対的な参照の問題を避けるために」と書かれています。

で、たぶん、こういう事だと思います。

例えば、「http://example.com/abc/」にアクセスして得られた HTML の中に、「../xyz/q.jpg」という指定があったとします。「ディレクトリは '/' で終わる」事が保証されていれば、

となります。しかし、'/' で終わってないと、Web サーバ側の処理としては、一度 http://example.com/abc がディレクトリか否かを確認した上で、相対パスを返す必要があります。

Web サーバの処理としては、基準の URL に対する確認処理が一手間増えるだけで、大きな問題ではないですが、パフォーマンス的には若干、'/' で終わっている事を確認する方が有利です。

あと、JavaScript など、クライアント側で相対パスから絶対パスを変換しようとすると、http://example.com/abc が、

のどちらか判断できないので、「../xyz/q.jpg」の絶対パスを決める事ができません。もし、前者であれば、http://example.com/ を基準に遡ろうとするので、「そんな絶対パスは無い」という事になります。極論すれば「http://example.com/abc.html」という名前のディレクトリも作る事は不可能ではありません(ただ、デフォルトの Apache の設定だと、実際にそういう挙動になるか、ちょっと微妙な気がしますが)。

といった事を考えると、

という事になると思います。


domodomodomoさんのコメント
貴重なお時間を割いていただき、 ご回答いただき、誠にありがとうございます(´;ω;`)ブワッ
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ