Ownedmedia ウェブ制作に役立つコンテンツを発信中!

Apache 2018.04.23

Apacheで使うshtmlとSSI(Server Side Includes)について

Tags: ,,

最近ある案件で見慣れない仕様があったので調べてみますと、SSI(Server Side Includes)と呼ばれる機能を知ったので備忘録として残しておきたいと思います。最近ではあまり見かけないようなのですが便利な機能でもあったりするようです。

 

ウェブサーバー内で実行できる機能のSSI

SSIはServer Side Includesの略で、ウェブサーバー内で実行することができる機能です。例えば、変数の値を出力したり、Linuxのコマンドを実行したり、外部ファイルをインクルードしたりすることができます。このSSIですが、HTMLファイル内に下記のような形で記述します。

<!--#[command] [attribute]="[value]" -->

 

ちょうどHTMLのコメントのような形になります。#の直後にあるコマンドにはいくつか用意されている実行機能を指定し、それに対応した属性と値を指定することになります。コマンドには主に以下のようなものが用意されています。

 

config システムのフォーマットを設定する
echo 指定した値を出力する
exec 指定したコマンドを実行する
include ファイルをインクルードする

 

これらを使うことでいろんな機能が実行できるようになります。例としていくつかサンプルをあげてみます。

// 例:現在の日時を表示する
<!--#echo var="DATE_LOCAL" -->

// 例:コマンドでディレクトリ内のリストを出力する
<!--#exec cmd="ls" -->

// 例:外部ファイルのインクルード(同ディレクトリの場合)
<!--#include file="sample.html" -->

// 例:外部ファイルのインクルード(他ディレクトリの場合)
<!--#include virtual="../html/sample.html" -->

 

 

.htaccessを編集してSSIを使えるようにする

SSIは初期状態では使えませんので、サーバー設定ファイルや.htaccessファイルを編集する必要があります。これら編集部分をまとめてみますと下記を追加する形になります。

【.htaccess】

Options IncludesNOEXEC
AddType text/html .shtml
AddHandler server-parsed .shtml

 

まずオプションの「IncludesNOEXEC」でSSIを有効にして、かつEXECの実行を無効にさせます。「Includes」だけですとEXECのコマンド実行を許可することになるのでセキュリティリスクが高まりますので注意が必要です。

 

次に「shtml」の拡張子を追加して有効にし、SSIの対象ファイルと設定します。SSIは通常のHTMLファイルでも使えるのですが、その場合は他のすべてのHTMLファイルが対象になるのでセキュリティリスクが高まります。ですので、SSIを実行する対象は「shtml」の拡張子を持ったファイルに限定しておくと良いようです。

 


 

セキュリティリスクもありサーバー側での処理はPHPで対応するケースが多いので、あまり最近では少なくなっているようですが、豆知識として覚えておくと便利かもしれませんね。

 

(参考サイト)
Apache チュートリアル: Server Side Includes 入門
SSIの仕組みと有効化・制限の設定

この記事を書いた人

オガワ シンヤ

DesignSupply.代表 / ディレクター・ウェブデザイナー・フロントエンドエンジニアをやっています。「ウェブとデザインでヒト・モノ・サービスを繋げ新しい価値を生み出す」をコンセプトに日々奮闘中!制作中はチョコレートが欠かせない三十路Webクリエイター。

  • Twitter

コメントフォーム

記事に関するご質問やご意見などありましたら下記のコメントフォームよりお気軽に投稿ください。なおメールアドレスは公開されませんのでご安心ください。

内容に問題なければ、お名前・ハンドルネームとメールアドレスを入力いただき、下記の「コメントを送信」ボタンを押してください。

CAPTCHA


この記事もよく読まれています

Scroll to Top
ご質問・ご相談はありませんか ?