拡張子を.htmlのまま変えずに、共通パーツだけphp includeで管理したい——そう考えたことはないでしょうか。
以前運営していた自サイトは、もともとすべて静的HTMLで組んでいました。ページ数が40〜50を超えたあたりから、ヘッダーの広告タグ1つ差し替えるだけでも全ファイルを開き直す作業が発生し、さすがに限界を感じたのを覚えています。とはいえ、既存のURL(拡張子.html)を変えるとインデックス済みのページに影響が出そうで、丸ごとPHP化するのも気が引ける——そこで折衷案として、拡張子は.htmlのまま、ヘッダー・フッターなど共通パーツの部分だけphp includeで読み込む構成に切り替えました。本記事はそのときの設定手順を、MAMPのローカル環境とConoHa WINGの本番環境の両方について実際の設定値ベースでまとめたものです。
目的:HTMLでphp includeを使いたい
今回のゴールは、拡張子が.htmlのファイルの中に<?php include ?>を書いて、それを正しく動かすことです。書き方自体は下記のように普通のPHPインクルードと変わりません。
<?php $a = $_SERVER['DOCUMENT_ROOT']; include($a."/ディレクトリ名/ファイル名.shtml"); ?> // あるいは短縮形 <?php include($_SERVER['DOCUMENT_ROOT']."/ディレクトリ名/ファイル名.shtml"); ?>
前提:httpd.conf設定
ローカル環境(MAMP)ではデフォルトで.htaccessの記述が無視される設定になっているため、まずこれを読み込ませる設定に変更する必要があります。対象は/Applications/MAMP/conf/apache/httpd.confです。
<Directory /> Options Indexes FollowSymLinks AllowOverride None </Directory>編集後
<Directory /> Options Indexes FollowSymLinks AllowOverride All </Directory>
AllowOverride Allにすることで.htaccessの読み込みが有効になります。
準備:ファイル構成と基本記述
動作確認用に、MAMPのhtdocs配下へ次のようなシンプルな構成を用意します。
htdocs/
├── index.html
└── include/
└── test.shtml
index.htmlには以下を記述します。
<?php include($_SERVER['DOCUMENT_ROOT']."/include/test.shtml"); ?>
500エラーを解消する
ここまでの設定でMAMPを起動すると、環境によっては500エラーで画面が真っ白になることがあります。私の環境では、.htaccess内のRewriteRuleをMAMP側のApacheが処理しきれていないことが原因でした。mod_rewrite関連のモジュールが読み込まれていない、あるいはバージョンの相性が悪いケースが多いようです。
対処法として、/Applications/MAMP/conf/apache/httpd.conf内の該当行を一時的にコメントアウトします。
# LoadModule rewrite_module modules/mod_rewrite.so
これで500エラーは解消しますが、あくまでローカル検証用の応急処置です。本番のConoHa WING側では別途mod_rewriteが有効になっているため、この行を戻し忘れないよう注意してください。
MAMP環境でHTMLファイルにPHPを動作させる
ここまでの下準備が済んだら、本題のHTML拡張子にPHPを解釈させる設定です。MAMPは初期状態では.htmlをPHPとして処理しないため、対象ディレクトリの.htaccessに次の1行を追記します。
AddHandler php-fastcgi .html .htm
追記後、MAMPを一度再起動すれば反映されます。index.htmlをブラウザで開いてincludeしたファイルの中身が表示されれば成功です。
ConoHa WINGでHTMLファイルにPHPを動作させる
ローカルで動作確認が取れたら、次は本番のConoHa WINGです。ConoHa WINGはLiteSpeed系のサーバーを採用しているため、MAMP(Apache)と同じAddHandlerの書き方では反映されません。代わりに、対象ディレクトリの.htaccessへ次の記述を追加します。
AddType application/x-httpd-lsphp .html
ConoHa WINGのコントロールパネルからは、「サイト管理」→対象ドメインを選択→「ファイルマネージャー」経由で該当ディレクトリの.htaccessを直接編集できます。FTPクライアントを別途用意しなくても、ブラウザ上の管理画面だけで作業が完結するのはConoHa WINGならではの利点です。編集後は反映まで数十秒〜1分ほど時間差が出ることがあるため、変更が効かないように見えてもすぐにキャッシュを疑わず、少し待ってから再読み込みすると良いでしょう。
.htaccessに残したまま切り替える場合は、使わない側をコメントアウトしておくと事故を防げます。
ここまで設定できれば、本番のConoHa WING環境でも拡張子.htmlのままPHPが解釈され、includeしたパーツが問題なく表示されるようになります。
まとめ
今回試した内容を整理すると、ポイントは次の3つです。
- 拡張子
.htmlのままPHPを動かすには、環境ごとに異なる.htaccessの記述が必要 - ローカル(MAMP/Apache):
AddHandler php-fastcgi .html .htm - 本番(ConoHa WING/LiteSpeed):
AddType application/x-httpd-lsphp .html
サーバーの種類(Apache系かLiteSpeed系か)によって書き方が変わる点が最初のつまずきポイントなので、両方の記述を混同しないよう、環境ごとにコメントアウトで切り替えるのが安全です。本記事の内容は、筆者が2026年時点で実際に複数サイトを運用した際の検証結果に基づいています。
よくある質問(FAQ)
Q. .phpにリネームすればいいのでは?
A. それも選択肢の一つです。ただし、すでに公開・被リンクされている.htmlのURLを変更すると、検索順位や外部からのリンクに影響が出るリスクがあります。URLを変えずに共通パーツだけ管理したい場合は、今回のように.htaccess側で対応するほうが安全です。
Q. SEOに影響はありますか?
A. サーバー側でPHPを処理してからHTMLとしてブラウザ・クローラーに返す仕組みなので、最終的に出力される内容自体は通常のHTMLと変わりません。そのため基本的にSEO評価への悪影響はないと考えられます。
Q. WordPressなど他のCMSを使っているサイトでも同じ方法は使えますか?
A. 今回の方法は静的HTMLサイトを想定したものです。WordPressのようにPHPベースで動いているCMSでは、そもそもテンプレート側でincludeやテーマ機能を使えるため、この記事の設定は基本的に不要です。