Apache2のinclude・Debian

 ある日の事だった。
 僕はネットで友人とNokiaのGSM携帯について話していた。日本の携帯はどうしてバッテリーが保たないわ使わない機能がてんこもりだわという友達の愚痴に進むに及び、よくも悪くもそれが日本製品だよなぁ内心思っていたら唐突に会社から電話がかかってきた。
 「へいスティーブ、HTMLファイルでSSI Includeを効かせるにはどうするんだい?教えてくれよ!」おやおや @@

 そんなわけでこの記事を書く。ちなみに以上の話はフィクションであり、私はスティーブではないので念のため :D

Debian上のApache2

2008/10/29現在、Apacheは2.2.*系列になっている。tar玉からインストールした方ならご存知のように最近のApacheの設定ファイルは細分化され、機能別になっている。これは歴史的トレンドにもなっていて、まさかの時もすべてが壊れないし、付加的な各種ツールから操作する時にも都合がいい。そういうわけなんである。

Debianの手法はオリジナルとは違う。でもバラバラで管理するという上ではやはり同じようになっている。

.htmlでSSI Includeを効かせる

負荷面での問題にはここでは触れない。.htmlも*.shtmlと同様に扱うのは簡単だが、当然負荷が上がるのは今更論じるまでもないだろうからだ。

さて、Debian上でこれを有効にするには以下のようにする。これは手法のひとつに過ぎず他にもいくつかのやり方があるが、これらも基本は皆同じである。つまり「SSIを有効にする」と「*.htmlでも*.shtml同様に扱う」この二点である。

SSIを有効にする。

Debian系列ではincludeモジュールをロードする。つまり次のコマンドを実行する。

# a2enmod include

alreadyナントカと言われるならば既にロードずみ。そうでないなら、reloadがどうのと言われるはずである。うまくいったからapacheをreload、またはrestartしなさいというわけだ。

使いたいドメインでincludeを有効にする

このままでは肝心のドメインで有効にならないだろう。

/etc/apache2/sites-available/default を見て該当ディレクトリに"Includes"を追加せよ、といえばApache2の設定をした人ならばわかるはずだ。

 <Directory /home/*/public_html/>
        Options Indexes FollowSymLinks +MultiViews Includes
 </Directory>

.htmlの扱いを.shtmlと同じにする

/etc/apache2/apache2.conf を見て、以下を追加。この方法は*.phpなんかでも使える。

変更前

    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml

変更後

    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
    AddOutputFilter INCLUDES .html

Apache2を切り直す。

restartは時々問題を起こす事がある。ここはstopしてstartしたい。

# /etc/init.d/apache2 stop
# /etc/init.d/apache2 start