psychoblog

indexファイルのすゝめ

by die-O on Feb.16, 2005, under text

WEBの世界に昔からある慣習として、トップページのアドレスをindex.htmlにする、というのがあります。これは、解りやすいとかそういった理由もありますが、ウェブサーバーの仕様としてindex.htmlは省略できるからです。

http://xxx.com/index.html

というアドレスであれば、

http://xxx.com/

というようにindex.htmlまで指定しなくても、そのディレクトリまで指定すれば自動的にindex.htmlにアクセスしてくれます。
その昔、90年代中頃にはまだまだウェブサーバーも今のようにApacheが標準ではなかったため、Windows NTをウェブサーバとして使っていたサイトも多く、Windows NTではindex.htmlではなくdefault.htmとしないと省略されなかったりしましたが、現在ではレンタルサーバや個人向けプロバイダのサービスでは、index.html(Windows固有の3桁の拡張子.htmでも可)が一般的となっています。
さて、このindex.htmlですが、特にサイト全体のトップページのみで使えるというわけではなく、すべての階層に関して適用されます。

http://xxx.com/contents/index.html

であれば、

http://xxx.com/contents/

というように、全ての階層においてindex.htmlというファイルがあれば、そのディレクトリまでのアドレスでアクセス出来るわけです。
 これはセキュリティ上においても非常に重要な手段でもあります。例えばindex.htmlがないディレクトリにアクセスされた場合、ウェブサーバの設定によってはそのディレクトリのファイル一覧が訪問者に表示されてしまいます。設定がしてある場合でも、index.htmlがないためエラーページが表示されてしまいます。
現在のように検索エンジンが主なアクセス元になってくると、すべての訪問者がサイトのトップページにアクセスしてくるわけではなく、http://xxx.com/contents/music/sample.htmlのような階層の深いページにいきなりアクセスしてきたりするわけです。そしてこのページに少しでも興味をもった人であれば、それ以外はどんなページがあるのか気になって、ひとまずトップページなりその上位のページにアクセスしようと思うはずです。この場合意外と多いやり方に、適当にアドレスを区切ってアクセスするやり方があります。
上の例でいえば、http://xxx.com/contents/music/sample.html、という音楽紹介のページにアクセスしてきた訪問者が、ほかにどんな音楽を紹介しているのか興味を持った時に、そのページ内でリンクを探すよりも、ブラウザのアドレス欄でsample.htmlだけ消して、http://xxx.com/contents/music/ としてリターンキーを押すという方法でページを閲覧する場合があるわけです。これは、階層が複雑なサイトになればなるほど、こういった方法でアクセスする訪問者が多くなるといえるでしょう。
 このとき上の例でいえば、http://xxx.com/contents/music/index.htmlというファイルがなかったら、http://xxx.com/contents/music/とアドレスに打ち込んできた訪問者に対して、エラーページか、http://xxx.com/contents/music/の中身の一覧が表示されてしまうのです。逆に言えばこの場合、音楽紹介ページのトップページは、http://xxx.com/contents/music/index.html、にすると非常に分かりやすいといえます。
Movable Typeでは、設定ページにアクセスして「設定」(または「ウェブログの設定」)>「アーカイブの設定」の中の「アーカイブ・ファイルのテンプレート」という欄で、生成されるブログのページ階層とアドレスを指定出来ます。
 この部分が空欄のままで変更していなければ、Movable Typeは自動的に主なディレクトリにindex.html(アーカイブの拡張子の設定を.phpにしている場合はindex.php)が出来るようにファイルを生成します。(それでも「archives」や「2005」といった階層にはindex.htmlは作られません。試しにMovable Typeを使ったブログの個別ページなどにアクセスして、そのアドレスを〜/archives/で切ったアドレスにしてアクセスしてみると、エラーページか、最悪「archives」内の全ファイルがftpのように一覧表示されてしまうでしょう。)
しかし、この「アーカイブ・ファイルのテンプレート」をカスタマイズしている場合、意外とこのindexファイルが考慮されていない場合がほとんどです。これは些細な問題ではありますが、WEBサイトにおけるアクセシビリティの観点から見た場合は少々問題といえます。
 訪問者が増えれば増えるほど、こちらの意図しないアクセスも増えるわけで、ある程度はindexファイルを考慮して設定するのが好ましいでしょう。
以下に実際の設定例を載せます。


ウチのブログでは、アーカイブファイルを以下のように階層分けしています。

カテゴリーページ
 http://psychoblue.com/blog/archives/カテゴリー名/index.php

月別ページ
 http://psychoblue.com/blog/archives/年/月/index.php
日別ページ
 http://psychoblue.com/blog/archives/年/月/日/index.php
個別ページ
 http://psychoblue.com/blog/archives/年/月/日/時間.php

この場合、http://psychoblue.com/blog/archives/年/index.phpにアクセスされた場合に、年別のファイルを作ってないのでエラーになってしまいます。本来であれば、以下のようにすることで防げます。

月別ページ
 http://psychoblue.com/blog/archives/年-月/index.php

日別ページ
 http://psychoblue.com/blog/archives/年-月/日/index.php
個別ページ
 http://psychoblue.com/blog/archives/年-月/日/時間.php

やり方はいろいろありますが、基本的に生成されるアーカイブファイルがindex.html(index.php)になるようにします。個別ページに関しては、http://psychoblue.com/blog/archives/年-月/日/時間/index.php、とするのは無駄に階層を増やすだけですので、すでにindexファイルがある日別ディレクトリにまとめて入れるのが良いでしょう。
参考までに、上記の年月をまとめたアーカイブファイルの設定は、「設定」(または「ウェブログの設定」)>「アーカイブの設定」の中の「アーカイブ・ファイルのテンプレート」という欄に以下のように入力します。

個別アーカイブ
 <$MTEntryDate format="%y-%m/%d/%H%M"$>.php

日付アーカイブ
 <$MTEntryDate format="%y-%m/%d"$>/index.php
月別アーカイブ
 <$MTEntryDate format="%y-%m"$>/index.php
カテゴリーアーカイブ
 <$MTArchiveCategory dirify="1"$>/index.php

PHP化している場合は必ず拡張子はphpにします。(してなければhtml)
 また、日付を指定する属性には以下のようなものがあります。

例:2005年02月16日水曜日14時54分18秒
%a 短縮形式の曜日名・・・水(Wed)
%A 完全な曜日名・・・水曜日(Wednesday)
%b 短縮形式の月名・・・2(Feb)
%B 完全な月名・・・2(February)
%d 2桁の日付・・・16(16)
%e 日付・・・16(16)
%H 24時間表記の時間・・・14(14)
%I 12時間表記の時間・・・02(02)
%j その年の通算日数・・・047(047)
%k 24時間表記の時間・・・14(14)
%l 12時間表記の時間・・・ 2( 2)
%m 2桁の月・・・02(02)
%M 2桁の分・・・54(54)
%p AMかPMのいずれか・・・PM(PM)
%S 2桁の秒・・・18(18)
%x 一般的な日付表現・・・2005年02月16日(February 1, 2005)
%X 一般的な時刻表現・・・14:54(2:54 PM)
%y 年を表す2桁の数字・・・05(05)
%Y 年を表す4桁の数字・・・2005(2005)

Leave a Reply

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Visit other sites!

A few highly recommended sites...