Web制作で「ヘッダーやフッターを毎回コピペして管理するの大変…」という悩み、ありませんか?
そんなときに役立つのが、PHPのinclude()を使ったパーツ共通化です!
この記事では、HTMLファイルも含めたincludeの使い方と、相対パス・.htaccess対応のポイントまで解説します。
もくじ
PHPのinclude()で共通パーツを読み込む
PHPの include は、他のファイルを読み込んでその場に挿入する命令です。
このように書くだけで、header.html の内容をその場所に差し込むことができます。
<?php include("header.html"); ?>
HTMLファイルのままでも読み込める!
includeの対象は.phpファイルだけでなく、.htmlでもOK!
<?php include("parts/header.html"); ?>
これにより、デザイナーがHTMLで管理しているパーツも、PHPで読み込んで共通化できます。
PHPファイルを読み込むパターン(より動的な処理が可能)
HTMLではなく、PHPファイルとして管理しておくと、以下のように処理も含めたヘッダーなどを読み込めます。
<?php include("parts/header.php"); ?>
例)header.phpに現在のページタイトルを出力する処理などを追加可能:
<title><?php echo $pageTitle; ?> | サイト名</title>
相対パスで読み込むには?
相対パスを使えば、階層が違っても柔軟に読み込めます。
<?php include("./common/header.html"); ?>
<?php include("../parts/footer.php"); ?>
./は現在の階層../は1つ上の階層
dirname(__FILE__) を使った安全な書き方
動的なパス管理でよく使われるのがこの書き方:
<?php include(dirname(__FILE__) . '/header_inc.php'); ?>
これは絶対パスとしての安全性が高く、どの階層からでも正確に読み込めるのが特徴です。
ただし、HTMLファイルを相対パスで読み込む場合は、シンプルな書き方の方が扱いやすいです。
<?php include("parts/header.html"); ?>
.htaccessでHTMLもPHPとして動かす(応用)
通常、.htmlファイルではPHPが動作しません。
でも .htaccess を使えば、HTMLファイル内でもPHPが使えるようにすることも可能です。
例).htaccessに以下を記述:
AddType application/x-httpd-php .html
これで .html ファイルも PHPとして処理されます。
ただし、セキュリティやメンテナンス性の面から常用は推奨されません。
→ 基本的には .php 拡張子で管理しましょう!
ディレクトリ構成の例
/site/
├── index.php
├── about.php
├── parts/
│ ├── header.html
│ └── footer.php
index.php の中身例:
<?php include("parts/header.html"); ?>
<h1>トップページ</h1>
<?php include("parts/footer.php"); ?>
共通パーツ内のリンクを簡単管理!<?php print $Path; ?>の使い方
共通のヘッダーやフッターをPHPでinclude()していると、/index.php にいるときはリンクが通るのに、/about/index.php にいるとリンク切れになる…
そんなときに便利なのが、相対パスを自動で補完できる $Path 変数です。
こんなとき困る!
<!-- 共通header.htmlなどに書いたリンク -->
<a href="contact.php">お問い合わせ</a>
↑ トップページ(/index.php)では通るけど、
サブページ(/about/index.php)では about/contact.php を探してしまってリンク切れ!
解決策:パスのプレフィックスを変数で管理!
まず、各ページで $Path を定義しておきます。
index.php(トップページ)
<?php $Path = "./"; ?>
<?php include("parts/header.php"); ?>
about/index.php(サブディレクトリ)
<?php $Path = "../"; ?>
<?php include("../parts/header.php"); ?>
共通パーツ(header.php)内の書き方
<nav>
<ul>
<li><a href="<?php print $Path; ?>index.php">ホーム</a></li>
<li><a href="<?php print $Path; ?>about/index.php">会社概要</a></li>
<li><a href="<?php print $Path; ?>contact.php">お問い合わせ</a></li>
</ul>
</nav>
$Pathがそれぞれのページで相対パスになっているので、
共通パーツ内のリンクがすべてのページで正しく機能します!
注意点
$Pathを使うには読み込む前に必ず変数を定義しておくこと!- JavaScriptやCSSの読み込みパスも
$Pathを使えば統一可能:
<link rel="stylesheet" href="<?php print $Path; ?>assets/style.css">
<script src="<?php print $Path; ?>assets/script.js"></script>
WordPressでは不要(get_template_directory_uri() などを使うため)
まとめ
| 項目 | 内容 |
|---|---|
| HTML読み込み | <a>やナビなど静的要素に便利 |
| PHP読み込み | 動的要素・変数使用に最適 |
| 相対パス対応 | ./, ../などで柔軟に管理可能 |
| dirname(FILE) | 絶対パスで安全に管理したいときに有効 |
| .htaccess | .htmlにPHPを使いたい場合の裏技(注意あり) |
おすすめの使い分け
| ファイルタイプ | 使い道 |
|---|---|
.html |
ナビ・フッター・単純なデザインパーツ |
.php |
ロジック付きのヘッダー、条件分岐を含むテンプレートなど |
共通パーツの管理をラクにしたいなら、include()を上手に使って、
効率的でミスのないWeb制作を目指しましょう!

