kakiro-webカキローウェブ

システム開発情報とコンピューター書籍の紹介サイト

CentOS6.7 64bit Apache2.4.16 SSI(Server Side Includes)を使用

CentOS6.7 64bitのApache2.4.16で、SSI(Server Side Includes)を使用する方法を以下に示します。

※ここで使用しているApacheのインストールについては、当サイトのCentOS6 64bitにApache2.4をRPMからインストールのページをご覧ください。

※CentOS7 64bitをご使用の場合は、当サイトのCentOS7 64bit Apache2.4 SSI(Server Side Includes)を使用のページをご覧ください。

Apache2.4.16でSSI(Server Side Includes)を使用

HTML内でヘッダー、サイドバー、フッター等の各ページで共通する部分を別ファイルで作成し、各ページのファイルから読み込めるようにする機能として、SSI(Server Side Includes)というものがあります。

Apache2.4.16でSSIを使用する場合の設定を以下に示します。

Apacheの設定ファイルの編集

Apacheの設定ファイル「/etc/httpd/conf/httpd.conf」で、mod_includeを有効化するため、以下のコメントアウトを解除します。

#LoadModule include_module lib64/httpd/modules/mod_include.so
↓
LoadModule include_module lib64/httpd/modules/mod_include.so

「httpd.conf」でSSIを使用したいディレクトリに対し、以下のような設定を行います。

<Directory "/xxxxx/html">
:(略)
    #Optionsの設定は、既存の設定に追加するのではなく、ディレクトリへの新たな設定とするときは、「+」の指定は不要。
    Options +Includes
    AddOutputFilter INCLUDES .html
    SSILegacyExprParser on
:(略)
</Directory>

※「/xxxxx/html」は、設定対象のディレクトリになります。

  • 「Options +Includes」は、SSIを使用するために必要な設定になります。
  • 「AddOutputFilter INCLUDES .html」は、拡張子「.html」のファイルに対し、SSIが使用されるようにするために必要な設定になります。
  • 「SSILegacyExprParser on」は、Apache2.2以前と2.4では、if要素での条件式の記述に変更があり、Apache2.4で2.2以前の記述を使用する場合に必要な設定になります。

「SSILegacyExprParser on」を設定していない場合、Apache2.4でif要素での条件式に2.2以前の記述を使用していると、画面に以下のようなエラーメッセージが表示されます。

[an error occurred while processing this directive]

if要素での条件式の変更の例として、Apache2.2以前で以下のように記述していたものは、

<!--#if expr="$DOCUMENT_NAME = aaa.html" -->
xxx
<!--#endif -->

Apache2.4では以下のように変更されています。

<!--#if expr='v("DOCUMENT_NAME") = "aaa.html"' -->
xxx
<!--#endif -->

「SSILegacyExprParser on」を設定すると、Apache2.2以前の記述が可能、2.4の記述は不可能となり、両方が利用可能となるものではありません。

上記の「httpd.conf」での設定を「.htaccess」で可能とするには、「httpd.conf」に以下のような設定を行います。

<Directory "/xxxxx/html">
:(略)
    AllowOverride Options FileInfo Limit
    #以下のように「.htaccess」で全ての設定を可能としてもよい。
    #AllowOverride All
:(略)
</Directory>

※「/xxxxx/html」は、設定対象のディレクトリになります。

  • 「AllowOverride」の「Options」は、「Options +Includes」の設定を可能とするものになります。
  • 「AllowOverride」の「FileInfo」は、「AddOutputFilter INCLUDES .html」の設定を可能とするものになります。
  • 「AllowOverride」の「Limit」は、「SSILegacyExprParser on」の設定を可能とするものになります。

SSI(Server Side Includes)の使用例

SSI(Server Side Includes)の使用例を少し紹介しておきます。

「/common/header.html」というファイルを読み込みたい場合は、htmlファイルに以下のように記載します。

<!--#include virtual="/common/header.html" -->

SSI(Server Side Includes)では、ユーザーエージェントを判別して、コンテンツの内容を切り替えることもできます。

例として、iPhone、iPad、Androidからのアクセス時に、特定の内容を出力したい場合は、以下のように記載します。

<!--#if expr="$HTTP_USER_AGENT = /iPhone|iPad|Android/" -->
iPhone、iPad、Androidからのアクセスです。
<!--#endif -->

Apache2.4.16でServer Side Includesを使用については、以上です。

Apacheに関するおすすめの書籍

当サイトの書籍紹介ページで、Apacheに関するおすすめの書籍の紹介も行っておりますので、ご覧ください。

Webセキュリティに関するおすすめの書籍

当サイトの書籍紹介ページで、Webセキュリティに関するおすすめの書籍の紹介も行っておりますので、ご覧ください。