Hello Guest    ログイン
top > Linux > Apache > mod_layoutでHTMLの自動挿入をする

mod_layoutでHTMLの自動挿入をする

カテゴリー: Apache| 公開: 2008/9/5 | 更新: 2008/9/9 | コメント(0)

mod_layoutモジュールを使ってヘッダやフッタなどを自動的に挿入するための設定。

モジュールをインストール

Apache2なので、libapache2-mod-layoutをaptでインストール

# apt-get install libapache2-mod-layout

モジュールを有効にする。

# a2enmod layout

設定

httpd.confか.htaccessに設定する。

mod_layoutを適用するファイルを指定する。下記の例では、*.htmlと*.htmに適用される。

AddOutputFilter LAYOUT html htm

LayoutHeaderで<body>直後、LayoutFooterで</body>直前に挿入するファイルを指定する。ファイル名はDocumentRootからのパスを指定。

LayoutHeader /include/header.html
LayoutFooter /include/footer.html

除外するファイルの指定。

LayoutIgnoreURI /ignore_dir/*

特定の文字列を置換したり、追加することもできる。

Layout "<!-- replace -->" /include/replace.html replace
Layout "<!-- append -->" /include/append.html append

 

  • .htaccessの設定例
DocumentRoot /example_path/public_html
.htaccessのパス /example_path/public_html/.htaccess

この場合.htaccessに

AddOutputFilter LAYOUT html htm
LayoutHeader /header.html

のように書くと、 /example_path/public_html 以下のすべての*.htmlと*.htmの<body>の直後に /example_path/public_html/header.html の内容が挿入される。

相対パスの指定も可能。

LayoutHeader ./header.html

この場合、 /example_path/public_html/index.html にアクセスすると /example_path/public_html/header.html が挿入されるが、 /example_path/public_html/dir/index.html にアクセスすると /example_path/public_html/dir/header.html が挿入されるので設定には注意が必要。

SSI(INCLUDES)との併用

SSIとmod_layoutの両方を適用させたいときは.htaccessに下記のように記入する。

AddOutputFilter INCLUDES;LAYOUT shtml
AddOutputFilter LAYOUT html htm

こうすると、*.shtmlにはSSI(INCLUDES)とmod_layout(LAYOUT)が、*.htmlと*.htmにはmod_layoutだけが適用される。
テストしてみたときはうまくいったが、SSIとmod_layoutは相性が悪いらしいので運用には注意が必要かも。

トラックバックURL

コメント送信

メールアドレスが公開されたり他で使用されたりすることはありません。