PHPでheaderやfooterなど共通ファイルを読み込む方法


Webサイトのheaderやfooterは多くのページで内容が共通なため、編集時にすべてのページのファイルを書き換えていくとなると時間がかかるのでメンテナンス性に欠けます。

WordPressで構築しているサイトでは、すでに共通のheaderやfooterを読み込む構造で作られているので問題ないですが、静的HTMLサイトでWebサイトを運用していると、どうしても手間がかかります。

ではWordPressなどのCMSで構築していけばいいのかというとそうでもなく、別にニュースやブログなど頻繁に公開するコンテンツがあまりない場合、HTMLやCSSの基礎知識がある場合はCMSを利用する必要はないと思います。

WordPressなどのCMSでは、PHPなどのサーバーサイドスクリプトが多く処理されたり、データベースを利用しているため、データベースの接続、クエリの発行ほかいろんな処理が動くため、静的HTMLサイトよりWebページの表示速度が遅くなります。
サーバのスペックによっては、今はだいぶ処理速度が速くなっていますが。
また、セキュリティの観点でもCMSは不正アクセスやコンテンツ改ざんのリスクが高いです。

Webサイトのボリュームや運用方法などを考えた上で、どちらで構築するかを選択すると良いでしょう。

HTMLの基礎知識があってコツコツWebサイトを管理したいという方に。
ここでは、静的HTMLサイトでPHPを利用して共通のheaderとfooterを読み込む方法をご紹介します。


共通ファイルの読み込み


従来のWebサイトはHTMLでマークアップしていきますので、ファイルの拡張子は「.html」となります。
今回はPHPスクリプトを利用しますので、拡張子を「.php」とします。現在htmlとしているファイルは拡張子を変更するだけでPHPファイルとすることができます。
既存サイトの場合は変更してください。
新規サイトであればそのままPHPファイルとして作成しましょう。

ただ、既存サイトで拡張子を変更する場合で気をつけておきたいことがあります。
拡張子を変更すると別ファイルという認識になるそうで、SEOの観点では影響を受けます。
その対策としては後述します。


それでは共通ファイルの読み込み方法を見ていきましょう。

例えば、以下のようなディレクトリ構造があるとしましょう。

Webサイトのディレクトリ構造



indexやaboutといったphpファイルと共に、headerとfooterのファイルを用意しました。

PHPで外部ファイルを読み込む際は、include関数を利用します。
以下のように記述します。

include関数の利用



dirname(__FILE__)はカレントディレクトリ(現在いるディレクトリ)の絶対パスを返します。
連結演算子のドット「.」で、現在いるディレクトリからheader.phpがあるパスを指定します。

footerも同じです。
すべてのファイルを構築する際に、headerとfooterの部分にincludeで読み込ませるようにすればOKです。

header.php / footer.php

include関数で読み込むheader.phpとfooter.php



用意したheader.phpとfooter.phpを、ヘッダーとフッター部分にinclude関数で読み込みます。

index.php

include関数でheader.phpとfooter.phpを読み込む



下層ページのファイルの場合は、現在のディレクトリから適切なパスを指定してください。

下層ページの場合



もしファイルを編集することがあれば、header.phpやfooter.phpを編集するだけで、すべてのページに対応することができます。


PHPファイルを利用した流れを説明してきましたが、
HTMLファイルのままPHPを利用したい場合もたまにあるみたいです。

Webサイトのルートディレクトリに、.htaccessファイルを作成して設定していきます。
以下のどれかを記述すればOKです。
(利用しているサーバによって異なります)

.htaccessの記述

//AddTypeの利用
AddType application/x-httpd-php .php .html

//AddHandlerの利用
AddHandler application/x-httpd-php .php .html


Xserverでは以下の記述でも

AddHandler fcgid-script .html



ただ、セキュリティ面でリスクがあることや、サーバに負担がかかることもあり、あまり利用するのはおすすめしません。
SEOの観点から見ると、拡張子が変更されると別のファイルという認識になるようなので、既存の静的HTMLサイトPHPにされる場合、またPHPという拡張子になるのに違和感を感じるという方は、.htaccessファイルで設定をしてください。
新規サイトであれば問題ありません。

また、既存サイトでPHPに変更してサーバにアップロードした際に、元のHTMLファイルは削除されるかと思いますが、元のページがリンク切れやSEOに影響を与えますので、以下の内容にも目を通しておくと良いでしょう。

↓ ↓ ↓

WebサイトやWordPressなどのブログでページを削除した後にやっておきたいSEO対策

webサイトのドメインやページURLを変更した際にやっておきたい301リダイレクト設定

301リダイレクトに関しては、似てようなページであると逆効果になるので、被リンクはなるべくしっかりと確認していき、GoogleのSearch ConsoleとBingのWebマスターツールでの対応が一番良いかと思います。

今後、プログラミングで制御していくことがあるのであれば、PHPでWeb制作を進めるといいでしょう。


まとめ


ここではheaderとfooterのお話でしたが、他にも全ページまたは一部のページで共通の部分がありましたら、includeで読み込ませると良いでしょう。

WordPressサイトであっても、独自の共通ファイルを読み込ませたい場合にも、PHPスクリプトでincludeは利用きます。

効率よくWebサイトを管理していってください。