玄箱HGにFedoraを入れて自宅サーバを構築(Fedora12) - Amonution

HTML文書のPHP化

玄箱HGやFedoraだけの問題ではありませんが、HTML文書をPHP化するときの注意点についてまとめます。
PHP化というの難しそうなイメージがありますが、CGIより随分と簡単な割に、カスタマイズが容易になるメリットは大きいです。

概要

PHPを実行させるためには、通常は拡張子「.php」のファイルを作りますが、 ここでは拡張子を「.html」のままPHPを実行させる方法を採ります。
「.html」のままPHPを実行させることのメリットは、 今まで各ページに書いたリンクを修正しなくて済む、 URLが変更されないため検索エンジンに影響がない、 PHPを使用していることがサイト観覧者に分からないためセキュリティ上有利、 などが上げられます。

「.htaccess」の変更

Apacheではデフォルトで拡張子「.php」のファイルをPHPファイルと認識しますが、 「.htaccess」を変更することで、他の拡張子のファイルもPHPファイルとして 扱うことができます。
下記の行を追加します。

[root@KURO-BOX ~]# vi /var/www/html/.htaccess

下記の行を追加
AddType application/x-httpd-php .php .html

または、下記の行を追加(どちらでも良い)
AddHandler application/x-httpd-php .php .html

これで、拡張子「.php」「.html」のファイルがPHPファイルとして認識されるようになります。

MIME Typeの設定

AddTypeまたはAddHandlerの設定により、「.html」のファイルが「application/x-httpd-php」として 認識されるようになったため、今まで「.htaccess」でMIME Typeを指定していた場合は 今後はHTMLファイルの中でMIME Typeを指定する必要があります。
ファイルの先頭に下記のように記述します。

HTMLの場合
<?php
header("content-type: text/html; charset=UTF-8");
?>
XHTMLの場合
<?php
header("content-type: application/xhtml+xml; charset=UTF-8");
?>

XHTMLに対応していないブラウザ向けの対応

MIME Type application/xhtml+xml に対応していないブラウザで表示させるため、 対応していないブラウザに対しては、MIME Type text/html を返すようにします。
(驚くことに、IE(Internet Explorer)は対応しておりません)
この方法では、XHTMLで書かれたファイルをtext/htmlと誤認させるため、 XHTML文書をHTML文書として表示しています。
100%の表示が可能とは限りませんが、ほとんど問題はないはずです。
ファイルの先頭に下記のように記述します。

<?php
   if(preg_match('/application\/xhtml\+xml/', $_SERVER["HTTP_ACCEPT"]) > 0) {
      header("content-type: application/xhtml+xml; charset=UTF-8");
   } else {
      header("content-type: text/html; charset=UTF-8");
   }
?>

当サイトの場合、上記の記述を別ファイルに持たせて、 各ファイルの先頭で require により読み込ませています。

スポンサード リンク

TOPに戻る / メニューに戻る
Copyright © 1999-2017 Amonution  All rights reserved.
Address