htaccessに3行足すだけ!『.html』内でPHPを実行する方法! ホームページをリニューアルした際にURLが変わってしまうことがあります。 例えば、ファイルの拡張子を変えたとき。リニューアルを機にPHPを使い始めたため、ファイルの拡張子を『.html』から『.php』に変更せざるを得ない場合などです。 ソースコード内にPHPのプログラムを書くことで、ホームページをさらに機能的にできるのですが、基本的には拡張子が『.php』のファイル内でしかPHPのプログラムを使えません。そのため、これまで『.html』拡張子でホームページを公開していた場合は、『.php』拡張子に変更せざるを得ないのです。 とはいえ、拡張子が変わるとURLも変わり、そのURLのページが検索エンジンから受けていた評価がなくなる懸念があります。SEOの観点からそれは避けるべきでしょう。 解決策は、『.html』のままPHPが動作するように設定すること。htaccessの設定で、それが可能になります。  

『.html』をPHPとして動作させるために必要な『htaccess』

htaccessとはApacheというWebサーバーの動作を制御するためのファイルです。Apacheは世界中でシェア率が高く、また日本のレンタルサーバーの多くがApacheを使用しています。 そのため、htaccessの書き方を覚えていれば、レンタルサーバーの会社を変えても使える場面が多いので、覚えておいて損はありません。 具体的には次のようなことが設定できます。
  • リダイレクト
  • アクセス制限
  • ベーシック認証の設定
  • MIMEタイプの設定
別のページにリダイレクトさせたり、特定のフォルダにアクセスさせないように制限をかけたりすることは一般的にも広く普及している使い方です。 上記の中の『MIMEタイプの設定』をhtaccessで制御することで『.html』ファイル内のPHPを実行できるように変更できます。  

htaccessでMIMEタイプを設定して、『.html』をPHPとして実行する

ようやく本題ですが、『.html』のままPHPを実行させるには「htmlの拡張子を持つファイルにアクセスがあった際にphpとして認識する」という設定をする必要があります。  

AddTypeを使う方法

ファイルには拡張子と呼ばれる、種類を分類するための単語がついています。HTML文書なら『ファイル名.html』、PHPプログラムなら『ファイル名.php』、画像ファイルなら『ファイル名.jpg』、などがあります。『.○○』のようにピリオドと英単語を組み合わせて記述されます。 サーバーは拡張子をもとに、MIMEタイプを判別し、処理方法を自動的に切り替えていますが、『AddType』を使うことで、処理方法をコントロールできるようになります。 『.html』をPHPとして実行するためには次のように記載します。

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

1行目「<FilesMatch "\.html$">」と3行目と「</FilesMatch>」はセットで使います。アクセスされているファイルの拡張子が『.html』であるということを判断するために使います。 2行目「AddType」が『MIMEタイプ』を設定するという意味になっており、次のようなルールで記述します。 AddType MIME-type extension [extension] …
  • AddType:MIMEタイプを設定する、という宣言
  • MIME-type:MIMEタイプの文字列
  • extension:MIMEタイプを設定する拡張子、複数指定する場合は半角スペースで区切って続ける
上記の例の『AddType application/x-httpd-php .html』は『.html』のファイルにPHPのMIMEタイプを設定するという意味があります。 こうすることで、『.html』ファイルであっても、サーバーはPHPだと認識し、ファイル内のプログラムを実行できるようになるのです。  

AddHandlerを使う方法

MIMEタイプを設定する方法とは違いますが、AddHandlerを使っても、同様の動作をします。次のように記述します。

<FilesMatch "\.html$">
  AddHandler php5-script .html
</FilesMatch>

1行目と3行目は先述しておりますので、省略します。 2行目『AddHandler』とは動作の種類を設定するという意味で、動作の総称を『ハンドラ』と呼びます。次のようなルールで記述します。 AddHandler handler-name extension [extension]…
  • AddHandler:ハンドラ(動作の種類)を設定する、という宣言
  • handler-name:ハンドラの文字列
  • extension:ハンドラを設定する対象の拡張子、複数指定する場合は半角スペースで区切って続ける
『php5-script』はPHP5を使用するという意味です。PHPのバージョンが違う場合、記述が変わりますので、サーバーの設定に併せて適宜変更します。 上記の記述により、『.html』のファイルはPHPとして動作するという設定になります。  

まとめ

ご利用のレンタルサーバーによっては、上記で紹介した方法を使えない場合があります。その際には、各レンタルサーバーのQ&Aページなどに、拡張子htmlのままphpとして動かす方法が書かれていないかをご覧ください。見つからない場合、各レンタルサーバー運営会社のカスタマーサポートにお問い合わせください。 拡張子が変わってしまうとURLが変わり、これまで受けていたページの評価がなくなってしまう可能性があります。すでにSEO対策を実施していた場合、これは大きな痛手になってしまいます。 SEOを考えた場合は、URLの変更を伴うリニューアルはできる限り避けた方が良いとお考えください。
PAGE TOP