サーバーサイドインクルード( SSI ) は、ワールドワイドウェブでほぼ独占的に使用される、シンプルなインタプリタ型のサーバーサイドスクリプト言語です。Webサーバー上の Web ページに 1 つ以上のファイルの内容を組み込む際に最も役立ちます(下記参照) 。これは、ページ ヘッダー、ページ フッター、ナビゲーション メニューなど、サイト全体で共通のコードであることがよくあります。SSI には、条件付き機能の制御ディレクティブと外部プログラムを呼び出すディレクティブも含まれています。Apache 、LiteSpeed、nginx、IIS、およびW3CのJigsaw でサポートされています。[ 1 ] NCSA HTTPdにルーツがあります。[ 2 ]#include
ウェブサーバーがSSI対応のHTMLファイルを認識し、これらの指示を実行するためには、ファイル名が特別な拡張子(デフォルトでは、、、、)で終わるか、サーバーが.shtmlこれを許可するように構成されている場合は、ファイルの実行ビットを設定する必要があります。[ 3 ].stm.shtm
シンプルなプログラミング言語である SSI は、テキストという 1 つの型のみをサポートしています。制御フローは非常にシンプルで、選択はサポートされていますが、ループはネイティブにはサポートされておらず、include を使用した再帰またはHTTP リダイレクトを使用してのみ実行できます。[ a ]この言語のシンプルな設計により、ほとんどのサーバーサイド スクリプト言語よりも学習と使用が容易になっていますが、複雑なサーバーサイド処理は、より機能豊富なプログラミング言語のいずれかで行われることがよくあります。SSI はチューリング完全です。[ 4 ]
SSI の構文はシンプルです。ディレクティブは HTML コメント内に配置されるため、SSI が有効になっていない場合、ユーザーはソースコードを見ない限り、ページ上に SSI ディレクティブが表示されません。構文では、先頭の <div> とディレクティブの間にスペースを入れることはできません。Apache の SSI チュートリアルでは、この形式では要素を閉じる <div> の前にスペース文字が必要であると規定されています。 [ 5 ]<!--#directive parameter=value parameter=value--><!---->
日々の株価を表示するウェブページは、以下のコードをウェブページのファイルに挿入することで、株価情報を表示させることができます 。 ファイルを一度変更するだけで、そのファイルを含むすべてのページに最新の株価情報が表示されます。表示対象はファイルに限らず、プログラムのテキスト出力や、現在時刻などのシステム変数の値でも構いません。<!--#include virtual="../quote.txt"-->quote.txt
以下は、 NCSA HTTPdの時代(1990 年代) の SSI ディレクティブです。[ 2 ]一部の実装では、これらすべてをサポートしていません。[ 6 ]
制御ディレクティブは後にSSIに追加されました。これには、広く普及しているif-elif-else-endifフロー制御や変数書き込みに加え、一部の実装にのみ見られるループなどの特殊な機能も含まれます。