Linuxでサイトをつくる ページがたくさんあるサイトを創りたい!!SSI編

トップ ›  Linux

Linuxでサイトをつくる

ページがたくさんあるサイトを創りたい!!SSI編

2009年8月8日 

ホームページを作成していて、「ページを多く創りたい !」と誰しも思うことだと思います。そして、HTMLファイルでHTMLタグを一つ一つ書いて創って行っくと、今度は、デザインに統一性を持たせたいと感じ、ページのデザインを一致させたいと思います。デザインの中にはサイトのメニュー等があります。これをHTMLで書きます。そうすると、メニューの増減があったときに、今まで書いたいくつものHTMLファイル、時には100を越えることもあるすべてのファイルを書き直す必要が出てきます。悩ましい問題です。

Apache機能を活用する「include」編

この悩ましい問題を解決するための一つの手段として、ApacheのSSI機能を使う方法があります。

SSIとは、includeコマンドを使って、あるHTMLファイルのタグの中に<!--#include file="logo.html"-->と記述しておくと、logo.htmlのファイルの内容をそのままHTMLタグの中に取り込んでくれます。

サイトのデザインは、様々なものがありますが、簡単に次の図のようなサイトだったとします。

そうすると、ロゴ部分HTMLタグを「logo.html」という名で、メニュー部分を「menu.html」で、フッター部分を「footer.html」で、それぞれ分割して保存しておきます。

そして、ホームページで掲載したいHTMLファイルを次のように記述して.html形式で保存します。

<!--#include file="logo.html"-->

<!--#include file="menu.html"-->

<p>本文の記事を通常のHTMLで記述</P>

<!--#include file="footer.html"-->

これをアップして、アクセスしてみてください。

残念!!ロゴやメニューの表示がされません。実は、Apacheの側の設定が必要です。

Apacheのhttpd.conf内のSSIを使用したいディレクトリに「Options +includes」を追加しApacheを再起動します。

<Directory />
Options Indexes FollowSymLinks
Options +includes
AllowOverride None
Order deny,allow
Deny from all
</Directory>

また、conf内に次のような記述がある場合は、「.shtml」しかSSIの解析をしません。これを「.html」にすると、通常の.htmlにもSSIの解析をします。これは、SSIの使い方にもよりますが、セキュリティーの問題もあるので、慎重に、、という記述をどこかのサイトで見たことがありますが、私のサイトでは、cgiの実行をSSIを通してないので、「.html」に変更をして使っていました。

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

SSIが正常に動いているかどうかの確認のために

<html>

<body>

<!--#printenv-->

</body>

</html>

以上のHTMLを記述してアクセスしてみてください。正常に作動すれば、エージェント情報を表示します。

いかがでしたか?他のファイルのHTMLの内容を一つにまとめて読み込みましたら、成功です。

私もしばらく使っていましたが、でも、次第に”<!-- -->”を書くのも面倒になってきませんか?

また、もっと動的に動くサイトを創りたいと思いませんか?

次回:ページがたくさんあるサイトを創りたい(その2)インストール編1

ApacheのSSIのドキュメントはこちら