Server Side Includes ( SSI )は、 World Wide Web専用にほぼ独占的に使用されている、シンプルな解釈型のサーバー側スクリプト言語です。 SSI は、ディレクティブを使用して、1 つ以上のファイルの内容をWeb サーバー上の Web ページ(下記参照)に取り込む場合に最も便利です。 これは通常、ページ ヘッダー、ページ フッター、ナビゲーション メニューなど、サイト全体で共通のコードの一部です。 SSI には、条件付き機能の制御ディレクティブや外部プログラムを呼び出すディレクティブも含まれています。 SSI は、Apache、LiteSpeed、nginx、IIS、およびW3Cの Jigsaw でサポートされています。[1] SSI のルーツはNCSA HTTPdにあります。[2]#include
ウェブサーバーがSSI対応HTMLファイルを認識し、これらの命令を実行するためには、ファイル名が特別な拡張子(デフォルトでは.shtml、、 )で終わるか、サーバーがこれを許可するように構成されて.stmいる.shtm場合は、ファイルの実行ビットを設定する必要があります。[3]
デザイン
シンプルなプログラミング言語である SSI は、テキストという 1 つの型のみをサポートしています。制御フローはかなりシンプルで、選択がサポートされていますが、ループはネイティブではサポートされておらず、 include またはHTTP リダイレクトを使用した再帰によってのみ実行できます。[a]言語の設計がシンプルなため、ほとんどのサーバー側スクリプト言語よりも習得と使用が容易ですが、複雑なサーバー側処理は、より機能が豊富なプログラミング言語の 1 つで行われることがよくあります。SSI はチューリング完全です。[4]
SSI の構文は単純です: <!--#directive parameter=value parameter=value -->。ディレクティブは HTML コメント内に配置され、SSI が有効になっていない場合、ソースを見ない限り、ユーザーはページ上の SSI ディレクティブを見ることができません。構文では、先頭の "<!--" とディレクティブの間にスペースを入れることができないことに注意してください。SSI に関する Apache チュートリアルでは、要素を閉じる "-->" の前にスペース文字が必要であると規定されています。[5]
例
日々の引用文を掲載した Web ページでは、次のコードを Web ページのファイルに配置することで引用文を含めることができます。
<!--#include 仮想="../quote.txt" -->
ファイルを 1 回変更するだけでquote.txt、そのファイルを含むすべてのページに最新の毎日の引用が表示されます。含められるのはファイルに限定されず、プログラムからのテキスト出力や、現在の時刻などのシステム変数の値も対象となります。
指令
一般
以下はNCSA HTTPd時代(1990年代)のSSIディレクティブです。[2]一部の実装ではこれらすべてをサポートしていません。[6]
制御指令
制御ディレクティブは、後で SSI に追加されます。これには、一般的な if-elif-else-endif フロー制御と変数の書き込みのほか、一部の実装でのみ見られるループなどのより特殊な機能が含まれます。
参照
注記
- ^ ただし、Jigsaw を含むいくつかの実装では見つかりました。
参考文献
- ^ ab 「SSIコマンド」。W3C 。 2019年3月24日閲覧。
- ^ abc 「Server Side Includes (SSI)」。NCSA HTTPdチュートリアル。1997年3月3日時点のオリジナルよりアーカイブ。 2019年3月24日閲覧。
- ^ 「SSI を許可するようにサーバーを構成する」。Apacheチュートリアル: Server Side Includes の概要。Apache Software Foundation。2015年6 月 24 日閲覧。
- ^ 「Server Side Includes Turing machine、Jan Schejbal」。 Janschejbal.de 。 2012年12月6日閲覧。
- ^ 「基本的な SSI ディレクティブと構文」。2018 年 2 月 9 日。2018年 2 月 9 日に取得。
- ^ 「モジュール ngx_http_ssi_module」。nginx ドキュメント。2021年11 月 16 日閲覧。
- ^ ab 「Apache モジュール mod_include」。Apache HTTP Server バージョン 2.4 ドキュメント。Apache Software Foundation。2021年 9 月 7 日閲覧。
- ^ abc "mod_include". Apache HTTP Server . 2019年3月25日閲覧。
- ^ "ngx_http_ssi_module". nginx.org . 2019年3月25日閲覧。
外部リンク
- 実装からの言語参照:
- Apache: Apache mod_include リファレンス。ディレクティブ「要素」を呼び出します。
- Nginx: モジュール ngx_http_ssi_module。ディレクティブ「commands」を呼び出します。
- NCSA HTTPd : オリジナルの NCSA HTTPd SSI リファレンス。ディレクティブ「コマンド」を呼び出します。
- W3C Jigsaw: サーバー側インクルード コマンド。ディレクティブ「要素」を呼び出します。サーブレット、JDBC、HTTP Cookie、ループで大幅に拡張されています。
- チュートリアル:
- Apache SSI チュートリアル
- SSI のわかりやすい英語ガイド
- SSI-Developer、Apache サーバーサイドインクルード
