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