- 投稿日2010-02-17 (水)
- 更新日2010-09-22 (水) 21:06
- Apache | サーバー(Debian)
mod_layoutを使用してみましたので備忘録です。
mod_layoutとは、ページの一番上や一番下に指定した文字列(ページ)を埋め込む事ができるモジュールです。
よく「無料レンタルサーバー」とかを利用するとページのヘッダーやフッター部分に自動的に広告が挿入されますが、まさにそれを実現するモジュールです。
それぞれのファイルには変更を加えず、出力する際に挿入されます。
具体的にはページの<body>の直後と</body>の直前に挿入されるようです。
インストール
Tangent Software: mod_layoutのページよりソースをダウンロードしてきて展開します。今回Apacheが2.2だったのでApache2.2用のソースをダウンロードしてきました。
cd /usr/local/src wget http://download.tangent.org/mod_layout-5.1.tar.gz tar zxvf mod_layout-5.1.tar.gz cd mod_layout-5.1
Makefileを編集します。
APXS= と APACHECTL= の部分を以下のように編集
(/usr/local/apache2/にApacheがインストールされている場合)
vi Makefile ↓以下のように編集 APXS=/usr/local/apache2/bin/apxs APACHECTL=/usr/local/apache2/bin/apachectl
あとはmakeしてインストール。
makeの際にエラーがないか確認して下さい
make make install
その後、Apacheを再起動します。
/usr/local/apache2/bin/apachectl restart
インストールを行うとhttpd.confへ
LoadModule layout_module modules/mod_layout.soという行が追加されていると思うので確認して下さい。
設定
まず挿入したい文章を用意しましょう。ここでは例としてheader.htmlとfooter.htmlを
/usr/local/apache2/htdocs/layout
に作成してみました。
このファイルへは<body>などの記述はしないでOKです。
header.htmlの内容
<p>Header Test</p>
footer.htmlの内容
<p>Footer Test<p>
次にhttpd.confへ以下を追加し、ヘッダーとフッターに挿入するものとして
header.htmlやfooter.htmlを指定します。
ちなみに.htaccessでも可能です。
vi /usr/local/apache2/conf/httpd.conf (適当な場所に追加) <Directory "/home/xxxxx/public_html"> Options FollowSymLinks ExecCGI AllowOverride All Order deny,allow Allow from all AddOutputFilterByType LAYOUT text/html LayoutHeader /usr/local/apache2/htdocs/layout/header.html LayoutFooter /usr/local/apache2/htdocs/layout/footer.html </Directory>
もちろん編集したらApacheを再起動しましょう。
AddOutputFilterByType
text/htmlとして返ってくるファイルにheader.htmlをheaderに挿入し、footer.htmlをfooterに挿入するようになります。
ここではByTypeと指定しましたが拡張子単位での指定も可能です。
AddOutputFilter LAYOUT html htm cgi php
とすると拡張子html htm cgi phpのものを挿入する対象とします。
LayoutHeader
ヘッダーとして<body>の後に挿入するものを指定しています。
LayoutHeader
ヘッダーとして</body>の前に挿入するものを指定しています。
こんな感じで表示できました。

もちろんフッター部分にも表示されております。
既知の問題
挿入される側がCGIやPHPのファイルだった場合に予期せぬ動作となってしまう事がありますので実際に安全に使用するなら
AddOutputFilter LAYOUT html htm
としてやるのがベストです。
しかし.htaccessを許可しているなら
LayoutIgnoreURI *.cgiのように記述してやる事で特定のフォルダ以下のcgiには挿入しないといった動作が可能です。
ちなみにLayoutMergeとかそういった内容はApache2.2(mod_layout 5系)では削除されたようで
記述するとApache再起動時にエラーとなるので注意して下さい。
- 次の記事→ AC-SERVER(ACサーバー)がはじまりました
- 前の記事→ Debian etchの公式アーカイブ鍵が失効
コメント:0
トラックバック:0
- この記事のトラックバックURL
- http://www.ahref.org/tech/server/apacche/717.html/trackback
- この記事へのリンク
- エーエイチレフ linuxサーバー技術情報 からの記事 Apacheのモジュールmod_layoutでHTMLの自動挿入















関連記事