Web システムのツボ
SSI(Server Side Include)で外部ファイルを読み込んでみよう
「htmlファイルで外部ファイルやPHPファイルを読み込みたい!」
という時はSSIを利用すれば簡単に実現できます。
今回はその方法を紹介したいと思います。
ただし、セキュリティの問題がありますので、
実案件で使用する際には、リスクを説明した上でお客様に確認をとってください。
更に、サーバーでSSIが使用できるかのチェックも忘れずに!
以上の事を注意してSSIを行ってみましょう。
最初から許可設定になっているサーバは少ないと思います。
そこで、SSIを有効にする為に.htaccessファイルに下記を記入します。
(残念ながらhtaccessが許可されていないサーバの場合は潔く諦めましょう)
2行目は拡張子がhtmlのファイルにSSIを有効にする記述です。
上記の記述を行い、SSIを有効にしたい一番上の階層のディレクトリに
「.htaccess」ファイルをアップロードします。
SSIを利用する目的が、 「execを使用してCGIプログラムを呼び出さない」
「ヘッダやフッタのhtmlを読み込むだけでOK!」 というような場合は、1行目を下記に書き換えます。
Googleなどで検索してみると、だいたい下記の方法がヒットすると思います。
読み込むファイルのディレクトリ場所によって記述方法が変わります。
「file」は、 上層のディレクトリにあるファイルは読み込めません。
別のディレクトリ指定でも、サーバの絶対パスでも指定が可能です。 下記の様な記述でもOKです。
外部ファイルの中身と置き換わります。
後はブラウザで確認し、上手く動作していればSSIの実装完了です!
他にもSSIでできることはたくさんあるのですが、
今回は外部ファイルの読み込みをご紹介させていただきました。
こんなに便利なSSIですが、冒頭でも書きました通りセキュリティの問題があるので、
十分ご注意下さい。
(hirohito)
という時はSSIを利用すれば簡単に実現できます。
今回はその方法を紹介したいと思います。
ただし、セキュリティの問題がありますので、
実案件で使用する際には、リスクを説明した上でお客様に確認をとってください。
更に、サーバーでSSIが使用できるかのチェックも忘れずに!
以上の事を注意してSSIを行ってみましょう。
ApacheでSSIを使えるようにする
まずSSIを行うには、Apacheの設定でSSIが許可されている必要がありますが、最初から許可設定になっているサーバは少ないと思います。
そこで、SSIを有効にする為に.htaccessファイルに下記を記入します。
(残念ながらhtaccessが許可されていないサーバの場合は潔く諦めましょう)
Options +Includes1行目がSSIを使えるようにする記述、
AddHandler server-parsed html
2行目は拡張子がhtmlのファイルにSSIを有効にする記述です。
上記の記述を行い、SSIを有効にしたい一番上の階層のディレクトリに
「.htaccess」ファイルをアップロードします。
execを有効にしない場合
上記の設定ですと、「exec」のプログラム実行も有効となります。SSIを利用する目的が、 「execを使用してCGIプログラムを呼び出さない」
「ヘッダやフッタのhtmlを読み込むだけでOK!」 というような場合は、1行目を下記に書き換えます。
Options +IncludesNOEXECNOEXECをつける事によって、「exec」の機能を省くことができます。
拡張子がshtmlのファイルのみSSIを有効にしたい場合
2行目を下記の記述に変更して下さい。AddHandler server-parsed shtmlこれで、shtmlの拡張子ファイルのみSSIが有効になり、 htmlの拡張子ファイルではSSIが無効となります。
htmlファイルにコードを記述
次に外部ファイルを読み込むコードを記述します。Googleなどで検索してみると、だいたい下記の方法がヒットすると思います。
<!--#include file="Include.html" -->この「file=""」と「virtual=""」の違いは、
<!--#include virtual="../include/Include.html" -->
読み込むファイルのディレクトリ場所によって記述方法が変わります。
「file」は、 上層のディレクトリにあるファイルは読み込めません。
<!--#include file="../file/oooo.html" -->これだとエラーになります。 下記のように、同ディレクトリやサブフォルダにある場合はOKです。
<!--#include file="oooo.html" -->反対に、「virtual=""」の場合は、
<!--#include file="file/oooo.html" -->
別のディレクトリ指定でも、サーバの絶対パスでも指定が可能です。 下記の様な記述でもOKです。
<!--#include virtual="../file/oooo.html" -->上記の記述を外部ファイルを読み込みたい箇所に書いておくと、
<!--#include virtual="/file/oooo.html" -->
外部ファイルの中身と置き換わります。
後はブラウザで確認し、上手く動作していればSSIの実装完了です!
他にもSSIでできることはたくさんあるのですが、
今回は外部ファイルの読み込みをご紹介させていただきました。
こんなに便利なSSIですが、冒頭でも書きました通りセキュリティの問題があるので、
十分ご注意下さい。
(hirohito)




