最近、拡張子が.htmlファイルで作られたサイトに、記事を追加したりコーディングしたりすることがありましたが、CMSなどではないため記事を追加するたびに全ページを修正しなければなりません。
もちろん一括置換すればいいのですが、今後の更新や修正のことを考え、共通のパーツはまとめて1つのファイルで管理したいと思いました。
PHPを動作させるには、一般的なレンタルサーバーでは、そのページの拡張子を「.php」にします。
しかし、すでに公開されているサイトの拡張子が.htmlのページをPHP化するために、拡張子を変更するとURLも変わってしまうことになります。
それではGoogleから全く別ページと見なされてしまうため、SEO的に良くありません。
そこで今回は、拡張子が.htmlのままで、PHPが動作する方法として「.htaccess」を使った簡単な方法を紹介いたします。
.htaccessに「AddType」を記述する
htmlファイルがあるディレクトリの.htaccessファイルに、以下の内容を記述してアップしてください。
AddType application/x-httpd-php .php .html
こちらは.htaccessファイルに「AddType」を記述しています。
もし.htaccessファイルがない場合は、新しく作ってアップしてください。
これで拡張子が.htmlのファイルでもPHPが動作します。
※サーバの環境や状況により、設定の方法が異なることがあります。また、.htaccessを変更するため、必ずバックアップを取り、いつでも元の状態に戻せるように注意してください。
特定のファイルのみPHPを動作させる
あまり気にすることではないですが、すべてのHTMLファイルをPHPとして動作させると、サーバーの負荷が大きくなります。
PHPを含まないHTMLファイルのページも、PHPで処理されるためです。
そこで特定のファイルのみPHPを動作させることができます。
<Files "xxxx.html">
AddType application/x-httpd-php .php .html
</Files>
こちらは「<Files “ファイル名”>」と「</Files>」で囲むことで、そのファイル(xxxx.html)のみPHPが動作するようにしています。
「<Files “ファイル名”>~</Files>」の代わりに「<FilesMatch “ファイル名”>~</FilesMatch>」を使って、正規表現で複数のファイルを指定することも可能です。
<FilesMatch "^content.*\.html$">
AddType application/x-httpd-php .php .html
</FilesMatch>
こちらはファイル名が「content○○.html」のようなページのみ、PHPが動作するようになります。
(※例えとして正規表現で0文字以上の任意の文字列を指定しています。)
PHPでincludeして共通のパーツを読み込む
サイトによって違いますが、後々の更新を簡単にできるようにするため、ヘッダーやフッター、サイドカラムなどの共通のパーツを1つのファイルにまとめておきます。
ここから各ページに共通のパーツを読み込むのですが、さまざまな方法があります。
- PHPでincludeする
- JavaScriptでincludeする
- Dreamweaverのテンプレートやライブラリ機能を使う
「JavaScript」でincludeした場合、ソースが吐き出されないので、SEO的に問題があります。
「Dreamweaver」だけで共通のパーツを管理すると、複数人で管理するのに向いていません。
ですので、ここでは「PHPでincludeする」方法を説明させていただきます。
例えば、共通するサイドカラムのパーツがあったとします。それらを「side.html」という1つのファイルにまとめておきます。
そして、読み込みたいページの表示させたい部分に下記を記述します。
<?php include ('side.html'); ?>
こちらで「side.html」というファイルを読み込んでいます。
ファイルのある階層が違う場合は、適宜パスを記述してください。
//ファイルが別のディレクトリに入っている場合
<?php include ('../side.html'); ?>
これで、共通のパーツが読み込まれ、「side.html」に記述されている内容が表示されます。
拡張子を.htmlから.phpに変更したい場合
PHPを使用するために.htmlから.phpへ拡張子を変更することは推奨できません。
なぜなら、拡張子を変更すると検索エンジンから別のページとしてみなされます。
そのサイトのこれまで蓄積されたPageRankなどの情報が自動的に引き継がれることはないので、まったく新規のページとして認識されます。
301リダイレクトで、旧URLから新URLへ情報が完全に受け渡される保証はどこにもありません。
ですが一応、拡張子を変更した場合のリダイレクトの方法を紹介いたします。
.htaccessに下記のように記述します。
RewriteEngine on
RewriteRule ^(.*).html$ /$1.php [R=301,L]
こちらで、以前の.htmlのURLから.phpのURLに301リダイレクトされます。
まとめ
サイトの状況によって、対応方法は変わってくると思いますが、できる限りURLを変更せず、今回の.htaccessに「AddType」を記述する方法で、PHPを動作させることをおすすめします。
これで更新や修正の作業時間を減らすことができるのではないでしょうか?
また、公開中のサイトはエラーが出ないよう、慎重に作業を進めてくださいね。