5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

任意の静的ファイルをPHPで動的に処理する

Last updated at Posted at 2014-02-01

想定ケースとしては、静的なHTMLとしてコンテンツを公開してるけど、部分的に動的に値を生み込みたいなあというものです。
(まだ試してませんが、もしかして JavaScript や CSS など静的リソースファイルに、環境に依存する値や接続情報などを動的に値を埋め込むにも使えるかもしれません。こんど試してみよう^^;)

WEBサーバが Apache の場合、mod_rewrite を用いて次のように実現できます。

.htaccess
RewriteEngine on

RewriteRule ^test\.html$ - [L,H=php5-script]

この例だと、test.html に対応するコンテンツハンドラに PHP を指定しています。

これで test.html は PHP として処理されますので、PHPスクリプトが利用できるようになります。

例として、現在の日付を埋め込んでみます。

test.html
<?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)。

.htaccess
AddHandler php5-script .html

もし対象を任意のファイルだけに絞りたい場合は、次のように FilesMatch ディレクティブで対象で対象を絞ります。

.htaccess
<FilesMatch "^test\.html$">
    AddHandler php5-script .html
</FilesMatch>
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?