拡張子が.htmlのページでPHPを動作させる

一般的なレンタルサーバーでは、PHPを動作させるには、そのページの拡張子を「.php」にします。
ただ、既存のHTMLのページ(拡張子が.htmlのページ)をPHP化する場合、拡張子を変えるとURLが変わってしまうことになります。

そこで、拡張子が.htmlのままで、PHPが動作するようにしたい場合がでてきます。
その方法をいくつか紹介します。

.htaccessファイルに「AddType」を記述する

1つ目の方法は、.htaccessファイルに「AddType」を記述する方法です。

基本的な書き方

モジュール版PHPが使われているサーバーなら、htmlファイルがあるディレクトリに、以下のような内容の.htaccessファイルを設置すると、拡張子が.htmlのファイルでもPHPが動作することが多いです。

AddType application/x-httpd-php .html

特定のファイルのみ対象にする

すべてのHTMLファイルをPHPとして動作させると、PHPを含まない純粋なHTMLのページも、PHPで処理されます。
そのため、サーバーの負荷が無駄に上がるという問題が生じます。
そこで、実際にPHPのコードが含まれているファイルだけを、PHP化することも考えられます。

ディレクトリ内の特定のHTMLファイルだけでPHPを動作させたい場合は、上記の行を「<Files "ファイル名">」と「</Files>」の行で囲みます。
例えば、「hoge.html」というファイルだけでPHPが動作するようにしたい場合は、.htaccessファイルを以下のように書きます。

<Files "hoge.html">
AddType application/x-httpd-php .html
</Files>

また、「<Files "・・・">~</Files>」の代わりに「<FilesMatch "・・・">~</FilesMatch>」を使って、特定するファイルを正規表現で指定することもできます。
例えば、.htaccessに以下のように書くと、ファイル名が「index○.html」(〇は0文字以上の任意の文字列)のようなページだけが、PHPとして動作するようになります。

<FilesMatch "^index.*\.html$">
AddType application/x-httpd-php .html
</FilesMatch>

mod_rewriteでPHPにリダイレクトする

サーバーによっては、.htaccessにAddTypeを記述することが禁止されている場合があります。
この場合は、上記の方法は使えません。
ただ、.htaccessにmod_rewriteの記述を書くことができるサーバーなら、mod_rewriteを使って、.htmlから.phpにリダイレクトする方法があります。

基本的な手順

まず、拡張子が.htmlのページにアクセスされたときに、ファイル名が同じで拡張子が.phpのページにリダイレクトするように、.htaccessに記述します。
htmlファイルがあるディレクトリに、以下の内容の.htaccessファイルを設置します。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)\.html$ $1.php [L]

次に、そのディレクトリの中で、拡張子が.htmlのすべてのファイルで、拡張子を.phpに変更します。

特定のファイルのみ対象にする

そのディレクトリ内の特定のHTMLファイルだけでPHPを動作させたい場合は、.htaccessを以下のように書きます。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)\.html$ $1.php [L]

そして、そのディレクトリの中で、PHPとして動作させたいHTMLファイルだけで、拡張子を.phpに変更します。
拡張子が.htmlのままのファイルは、通常のHTMLとして動作します(PHPの処理は行われません)。

サーバー固有の方法を使う

サーバーによっては、上記以外の方法で、HTMLのファイルをPHPとして動作させることができる場合があります。
例えば、lolipopだと、ディレクトリに以下のような.htaccessファイルを設置すると、そのディレクトリのHTMLのページがPHPとして動作するそうです。

AddHandler php5.2-script html