2013/09/07
Apache-2.2.25

SSIの設定と利用

SSIとはServer Side Includeの略で、HTML文書の中に決められた書式のコマンドを記述することできます。 このコマンドはブラウザからリクエストがあった場合に、WEBサーバーに実行されます。 実行結果はそのコマンドが記述されていた部分に埋め込まれ、ブラウザに表示されます。

このコマンドには、別のファイルからHTML文書を読み込むコマンドがあり、WEBサイト内の異なるページで同じフッターやヘッダー を使用している場合、ヘッダー、フッター部のみ別ファイルとしておき、複数のファイルから読み込ませることが出来ます。
こうすることで、共通的な部品に修正を行おうと思った場合、同じような修正をたくさんのファイルに せずとも済むというメリットがあります。

SSIの設定--拡張子による指定

Gentoo Linux ではデフォルトで /etc/apache2/modules.d/00_mod_mime.con 記述がありますが、コメントアウトされています。
 AddType text/html .shtml
 AddOutputFilter INCLUDES .shtml

上記記述で拡張子が.shtmlのファイルでSSIが使用可能になります。

さらにSSIの使用を許可するディレクトリの設定を行う必要があります。
以下の例では /var/www/localhost/htdocs 内のファイルにSSIの実行を許可しています。

<Directory "/var/www/localhost/htdocs">
        Options IncludesNoExec
</Directory>
"Options IncludesNoExec"の部分を"Options Includes"と記述してもSSIは有効になりますが、 Exec系のSSIも有効になってしまいます。Exec系のSSI命令は、システムのコマンドが実行できたりCGIプログラム が実行できたりと、セキュリティ上好ましくありません。フッターやヘッダーの共通化 だけならEXEC系のSSI命令は必要ないので、"Options IncludesNoExec"とするのが良いでしょう。

SSIの設定--Xbithackによる指定

上記の様に拡張子でSSIを有効にする方法では拡張子をshtmlにする必要があります。 そのため、既にあるファイルに対してSSIを利用するときにファイル名を変える必要があります。 ファイル名を変えると、そのファイルへのリンクも修正する必要があり、面倒です。

SSIでは、拡張子による制御のほかに、ファイルに実行権限を与える事でSSIを有効にするXbithackディレクティブ という設定があります。 以下の例では、/var/www/localhost/htdoc にある実行権限の与えられた ファイルで、SSI(Exec系のSSIを除く)を有効にしています。

<Directory "/var/www/localhost/htdocs">
        Xbithack full
        Options IncludesNoExec
</Directory>
例えばtest.htmlというファイルでSSIを有効にしたい場合は、 このファイルに実行権限を与えます。
$ chmod +x test.html

"Xbithack full"の部分は"Xbithack on" でもSSIは有効になりますが、Last-modifiedヘッダ が出力されなくなります。

Last-modifiedヘッダにより、サーバーはリクエストのあったファイルの最終更新日を ブラウザ等のクライアント知らせることができます。 クライアントはこの更新日を確認し、以前アクセスした日時以降に更新が行われているときのみデータを受け取るようにする事で、 通信量を削減する事ができます。

Last-modified等のヘッダー情報についてはHTTP Web-Sniffer で確認する事ができます。

SSIの利用

SSIには様々な使用法がありますが、他のファイルを読み込む方法のみ 例として挙げておきます。
あるHTMLファイルからfooter.htmlを読み込む場合の記述です。
<!--#include file="footer.html" -->
ファイル名に../や絶対パスを使用したい場合は"virtual"を使用します。
例では /hoge/footer.html を読み込むように指定しています。
<!--#include virtual="/hoge/footer.html" -->
Index
Basic認証の設定(ファイル認証)
Basic認証の設定(DB認証)
ApacheでのSSLの設定
SSIの設定と利用