(Webページの)URLに含まれる大文字について
2009年7月16日 - 5:39 AM by Takayuki
先日、講義のレポートを提出したのだが、提出はメールではなく担当教員のWebサイトにアップロードする方式だった。しかし、提出先ページを見に行こうとしても、404エラーが出てしまう。原因は、URLに含まれる大文字の部分を小文字で打ってしまっていることだった。世界で多数派を占めるであろう、UNIX系OSで動作している、ApacheやLighttpdと言ったWebサーバでは、URLの大文字と小文字を区別するのが普通である。
WebページのURLを部分に分解しながら、理解を深めていこう。以下のURLを考える。
http://norstrilia.com/hitton/kittons.html
このURLは、以下のように分解できる。
スキーム(scheme) | http |
ホスト名(host name) | norstrilia.com |
パス名(path) | /hitton/kittons.html |
スキームは、これがWebページを表すURLであることを示している。ほかにもftpやらmailtoというスキームがあるので、興味がある向きは調べてみると良いだろう。
ホスト名は、目的のデータが保存されているコンピュータの名前を表す名前で、ドメイン名(~.comとか)かIPアドレス(130.34.~というやつ)を用いる。ドメイン名は、大文字と小文字を区別しない(RFC 4343)。適当なWebサイトを開いて、URLの何文字かを大文字に書き換えても、問題なくアクセスできてしまう(たとえば、http://www.7andy.jp/とhttp://www.7andY.jp/)。
パス名は、ホスト名が指すコンピュータの内部における、データの位置を示す。スラッシュ(/)はディレクトリ(フォルダ)の区切りを表し、一番最後のスラッシュから末尾までがファイル名である。たとえば、”/old/north/australia.txt”は「oldディレクトリの中のnorthディレクトリの中にあるaustralia.txtと言うファイル」を表している。Windowsユーザにはなじみが無いかも知れないが、”/”は最上位のディレクトリを表し、「ルート(root)」と呼ぶ。
先に述べた「多数派」のWebサーバ、たとえばLinux上で動くApacheでは、パス名の大文字と小文字は区別される一方で、Windowsで動作するWebサーバは区別しない。これは、Webサーバが動作しているOSの「作法」に従っている。
Webサーバは基本的に、コンピュータの中にある特定のディレクトリに、外からのアクセスを提供する。たとえば、www.thinkblue.jpというWebサーバで/var/www/を公開ディレクトリに設定すると、http://www.thinkblue.jp/count/two.jpgを見ようすれば、/var/www/count/two.jpgの中身が見える。あるいは、alpharalpha.netがC:\public_html\を公開ディレクトリに設定すれば、http://alpharalpha.net/cats/cmell.htmlはC:\public_html\cats\cmell.htmlを指し示す。ここで、もしファイル名/ディレクトリ名の大文字/小文字が区別されないと、当然URLのパス名でも区別しないことになる。具体例をあげれば、UNIX系では/drunkboat.logと/DrunkBoat.logは完全に区別されるが、WindowsはC:\nothingatall.txtとC:\NothingAtAll.txtを区別しない。Windowsについて厳密に言えば、ファイル名/ディレクトリ名では区別されているものの(thaladywhosailedthesoul.docというファイル名をTheLadyWhoSailedTheSoul.docに変更することが出来る)、アクセスするときには区別しないことになっている。
原理的な説明はここまでとしよう。「URLには大文字/小文字の区別があるか?」という質問に対する、正確な答えは「状況による」であるが、現実的な答えは「ある」、ちょっと細かく言えば「.comとか.netとか.jpよりも後ろにはある」ということになる(ドメイン名にわざと大文字を混ぜて書くことは、特にラテン文字を使う言語圏では多くあるから、ドメイン名に大文字/小文字の区別がないことを示すのは重要である)。
今回の講義レポートの提出では、提出先のURLはプロジェクタで映示され、聴講者はこれを手書きでメモしていた。こういう状況では、大文字/小文字の混乱が起こるのは避けられないだろう。さらに、UNIX系OSの通例で大文字ファイル名はあまり使わないから、URLに大文字が混ざっていることも少なく、「URLはたいてい小文字である」という意識を持っている人も多いだろうから、なおのこと間違いが増えそうだ。「大文字に注意せよ!」との注記が欲しいところである。
おまけ: 今回、文中で使用した「実在しない」ドメイン名やファイル名について、ネタ元を探してみると楽しいかもしれない。
某授業のレポ提出先URLがめんどいから小文字で入力したら「そんなページありません」と怒られた。
と思ったらTakayukiのこのタイムリーな日記w
ためになったわ。さんくすw
URLの仕様とか、真面目に見るとかなり面倒やよね。まぁ見たこともねぇが。
より広範なURIとかのRFCとかはどうなってんだろねぇ。
まぁメールアドレスの仕様よりはましか。いよいよ日本語メアドとかがRFCに含まれるらしいし。
勘弁しちくり。