
Apacheで使うshtmlとSSI(Server Side Includes)について
最近ある案件で見慣れない仕様があったので調べてみますと、SSI(Server Side Includes)と呼ばれる機能を知ったので備忘録として残しておきたいと思います。最近ではあまり見かけないようなのですが便利な機能でもあったりするようです。
これらを使うことでいろんな機能が実行できるようになります。例としていくつかサンプルをあげてみます。
セキュリティリスクもありサーバー側での処理はPHPで対応するケースが多いので、あまり最近では少なくなっているようですが、豆知識として覚えておくと便利かもしれませんね。 (参考サイト) Apache チュートリアル: Server Side Includes 入門 SSIの仕組みと有効化・制限の設定
ウェブサーバー内で実行できる機能の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の仕組みと有効化・制限の設定
categories
- WordPress(61)
- JavaScript(49)
- Vue.js(48)
- CSS(46)
- jQuery(34)
- Nuxt.js(22)
- Sass(21)
- Gulp(17)
- webpack(16)
- PHP(14)
- HTML(14)
- GSAP(11)
- React(10)
- Vite(9)
- Pug(9)
- Laravel(8)
- Cordova(8)
- Linux(7)
- Next.js(6)
- Apache(5)
- Shopify(4)
- REST API(4)
- Node.js(4)
- Smarty(3)
- Git(3)
- JSON(3)
- その他プログラミング(3)
- Google Apps API(3)
- Bootstrap(3)
- 環境構築・システム(3)
- TypeScript(2)
- EJS(2)
- RMS(2)
- Docker(2)
- Instagram API(2)
- Excel VBA(2)
- SVG(1)
- Dart(1)
- ECカートASP(1)
- Markdown(1)
- AMP(1)
- Nginx(1)
- XML(1)
- shellscript(1)
- Ruby(1)
- MySQL(1)