MIMEとAddTypeのメモ
PHPセットアップ中にでてきたAddTypeについてと、AddTypeを知るために理解しなきゃいけないMIMEについて。
MIMEタイプ
AddTypeがどんなことをするのかはまずMIMEタイプっていうのを理解しないといけない。以下引用。
Webの世界では拡張子という概念と、もうひとつ『MIMEタイプ』という概念があります。MIMEタイプとは「タイプ名/サブタイプ名」の形式の文字列で、WEBサーバーとWEBブラウザの間はこのMIMEタイプを用いてデータの形式を指定しています。例えばMIMEタイプには以下のようなものがあります。
ファイル形式 一般的な拡張子 MIMEタイプ テキスト .txt text/plain HTML文書 .htm .html text/html XML文書 .xml text/xml JavaScript .js text/javascript VBScript .vbs text/vbscript CSS .css text/css GIF画像 .gif image/gif JPEG画像 .jpg .jpeg image/jpeg PNG画像 .png image/png CGIスクリプト .cgi application/x-httpd-cgi Word文書 .doc application/msword PDF文書 .pdf application/pdf
このタイプを定義しておかないとサーバーがあるファイルに対してそれのファイル形式を読み取ることが出来ないってことだろう。
言い換えればこのMIMEタイプの定義ファイル、mime.types
がコンピュータに対して「このファイルはこの形式ですよー」って教える役割を持っているということ。
中身確認してみよう。パスは(CentOSの場合)、/etc/mime.types
のよう。
$ cat /etc/mime.types # This is a comment. I love comments. # This file controls what Internet media types are sent to the client for # given file extension(s). Sending the correct media type to the client # is important so they know how to handle the content of the file. # Extra types can either be added here or by using an AddType directive # in your config files. For more information about Internet media types, # please read RFC 2045, 2046, 2047, 2048, and 2077. The Internet media type # registry is at <http://www.iana.org/assignments/media-types/>. # MIME type Extension application/EDI-Consent application/EDI-X12 application/EDIFACT ...
ここにしっかりと書いてあった。「クライアントに正しいメディアタイプを教えることは非常に重要である」とある。うん、クライアントがそのファイルを正しく扱うためにこの情報が必要なのか。
httpでリクエストがきて、サーバーは返すファイルの形式に寄ってこのMIMEタイプの情報を付与する。クライアント側に取ってはhtmlファイルもphpファイルもテキストでしかない?ってことなのかな。だからそれがなんのファイル形式であるかを伝えることが重要、と。httpdリクエストのヘッダーフィールドに付与される情報なのかな。
というか "I love comments" ってなんだw
AddType
AddType
の意味は以下とかかが分かりやすいかも。
http://www.adminweb.jp/apache/docroot/index4.html
http://mikeneko.creator.club.ne.jp/~lab/web/htaccess/mime.html
クライアントからリクエストがあったファイルに対して、WWWサーバはファイルの内容を返すと同時にそのファイルがどのような種類のファイルなのかを合わせてクライアントへ返します。その結果、クライアント側は取得したデータを適切な表示方法で扱うことが出来るようになります。
基本となるMIMEタイプと拡張子の組み合わせはデフォルトでは「mime.types」ファイルで登録されています。このファイル名及び設置ディレクトリは「TypesConfig」で設定されています。
既に登録されている拡張子の他に、別の拡張子に対するMIMEタイプを追加で登録することが出来ます。その場合は「mime.types」に追加で記述する代わりに「httpd.conf」ファイル内で「AddType」を使って記述することが推奨されています。
今までこういうのって、記事を見つけてコピペして動いてよっしゃ、で終わってたので、サーバーもきちんと勉強しなくちゃと思った。。。