想定ケースとしては、静的なHTMLとしてコンテンツを公開してるけど、部分的に動的に値を生み込みたいなあというものです。
(まだ試してませんが、もしかして JavaScript や CSS など静的リソースファイルに、環境に依存する値や接続情報などを動的に値を埋め込むにも使えるかもしれません。こんど試してみよう^^;)
WEBサーバが Apache の場合、mod_rewrite
を用いて次のように実現できます。
RewriteEngine on
RewriteRule ^test\.html$ - [L,H=php5-script]
この例だと、test.html
に対応するコンテンツハンドラに PHP を指定しています。
これで test.html
は PHP として処理されますので、PHPスクリプトが利用できるようになります。
例として、現在の日付を埋め込んでみます。
<?php
# ここはHTMLに出力する為の変数をいろいろ組み立てるエリア
$today = date("Y/m/d");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS">
<title>HTMLサンプル</title>
</head>
<body bgcolor=white background="xxx.gif" text=black link=blue vlink=fuchsia alink=red>
今日の日付は <?php print $today; ?> です。
</body>
</html>
サーバの test.html
にアクセスすると次のとおり。
最初から test.php
として作っておけよ.. という意見もあるかもしれませんが、すでにhtmlファイルとして運用しちゃってる場合やデザイナーさんとの共同作業でどうしても拡張子を .html
としたい場合、また外部リンクやAPIの向き先を環境毎に変更するのに便利かも..?
補足
mod_rewrite を使わなくても次のように Apache の設定ディレクティブで同じことは実現できます(下記の例に記載したディレクティブは .htaccess にも記載OK)。
AddHandler php5-script .html
もし対象を任意のファイルだけに絞りたい場合は、次のように FilesMatch
ディレクティブで対象で対象を絞ります。
<FilesMatch "^test\.html$">
AddHandler php5-script .html
</FilesMatch>