mod_layout

http://tangent.org/362/mod_layout.html
mod_layout

{source}
Apacheのmod_layoutは、htmlのタグの直ぐ後か、
タグの直ぐ前に外部のhtml文を自動挿入してくれるモジュールです。
{/source}
これを使うと、ページに共通のヘッダー部分やフッター部分を一つのhtmlにまとめておけば、
個別のhtmlに書くことなく、Apacheが自動挿入してくれます。
機能的にはSSIに近いのですが、決まりきった場所への挿入なので、Webサーバーの負荷もあまり高くないようです。

Apacheのモジュールの一つでlayoutってのがある。
よくある、フリーのWebサイトなので上下に広告がでるものがあるだろう。あーいったことが、
このモジュールで可能になる。カウンタを表示させたり、広告でもいいし、いろいろできるだろう。

$ sudo apt-get install libapache2-mod-layout
パッケージリストを読み込んでいます… 完了
依存関係ツリーを作成しています
状態情報を読み取っています… 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
libbeecrypt6 python-libxml2 python-celementtree librpm4.4 python-rpm rpm python-elementtree python-urlgrabber
これらを削除するには ‘apt-get autoremove’ を利用してください。
以下のパッケージが新たにインストールされます:
libapache2-mod-layout
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 158 個。
15.0kB のアーカイブを取得する必要があります。
この操作後に追加で 111kB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com hardy/universe libapache2-mod-layout 5.0-0ubuntu1 [15.0kB]
15.0kB を 0s で取得しました (32.3kB/s)
未選択パッケージ libapache2-mod-layout を選択しています。
(データベースを読み込んでいます … 現在 30115 個のファイルとディレクトリがインストールされています。)
(…/libapache2-mod-layout_5.0-0ubuntu1_i386.deb から) libapache2-mod-layout を展開しています…
libapache2-mod-layout (5.0-0ubuntu1) を設定しています …
Module layout installed; run /etc/init.d/apache2 force-reload to enable.

$ sudo /etc/init.d/apache2 force-reload
* Reloading web server config apache2 [ OK ]

http.conf、apache.confまたは.htaccessへ、

AddOutputFilter LAYOUT html
LayoutHeader /header.html
LayoutFooter /footer.html

の様にすると、*.htmlのファイルにheader.htmlとfooter.html が挿入される。

ここで、LayoutHeader,LayoutFooterは、絶対URLとして書いているが、相対URLとして書いても確か動いたような気がするが…どうだったかな。


AllowOverride None
Options SymLinksIfOwnerMatch

AddOutputFilter LAYOUT html
LayoutFooter /menu.html
LayoutIgnoreURI /diary/*
LayoutIgnoreURI /linux/*

また、下位のディレクトリに対しても設定が反映されてしまうので、それを避けるために不要なディレクトリについては、LayoutIgnoreURLを使っている。設定のやり方は他にもあり、cgiなどを使う場合にも使える(そのときはちょっとコツがあるようだ)が、使ってないので、説明は省略。