IT女子のお気に入りフォルダ

管理人の備忘録と実践を兼ねた(出来るだけ)役に立つ情報を配信するブログです。

PHPファイルでもURLは拡張子.htmlで見れるようにする方法

既存のHTMLのページにおいてヘッダーやフッターなどの共通部分を外部ファイルすることになりました。そのためにファイルをPHP化する必要がありますが、そうすると拡張子が変わるのでURLも変わってしまいます。

いやいや、相当SEOを頑張ってきたサイトなのでURLは変えたくない!
というわけで、phpファイルだけど、URLでは拡張子を.htmlとして動作するようにする2つの方法です。

.htaccessに「AddType」を記述する

htmlファイルがあるディレクトリに以下のような内容の.htaccessファイルを配置します。

AddType application/x-httpd-php .html

※この方法は、モジュール版PHPが使用されているサーバーの場合に有効のようです。

すべてのhtmlファイルをPHPとして動作させると純粋なhtmlファイルもPHPで処理されてしまい、サーバーに負荷がかかります。そこで、実際にPHPのコードが含まれている特定のhtmlファイルのみをPHPを動作させる場合は、先ほどの記述に少し追加します。

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

<Files "ファイル名">・・・</Files>の代わりに<FileMatch "正規表現">・・・</FileMatch>を使って特定のファイルを正規表現で指定することもできます。

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

.htaccessに「mod_write」でPHPにリダイレクトする

「mod_write」を使って、.htmlから.phpにリダイレクトする方法です。
htmlファイルがあるディレクトリに以下のような内容の.htaccessファイルを配置します。

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

ディレクトリ内で拡張子が.htmlの全てのファイルで、拡張子を.phpに変更します。
これもまた、サーバーの負荷を考えて特定のhtmlファイルだけでPHPを動作させる記述ができます。

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

PHPとして動作させたいファイルだけ拡張子を.phpにします。
拡張子が.htmlのままのファイルは通常のHTMLとして動作します。

サーバーによってはまた別の方法で実現できる場合ばあるようです。
例えばロリポップなんかは、PHPにバージョンによるようですが、以下のように記述すればいいらしい。

AddHandler php5.2-script html