htmlにはPHPを埋め込むことができますが、拡張子がhtmlの場合、そのままでは実行できません。
この場合、通常では拡張子を変えなければいけないところですが、apacheを使っている場合、設定ファイルや.htaccessに下記のようにかくと動きます。
1 |
AddType application/x-httpd-php .htm .html |
上記の処理自体はかなり昔から知っていたんですが、あまり理解していなかったのでこれを機にちょっと調査。
MIMETYPEとは
前提として知っておきたいのはmimetypeですね。なんとなくHTTPリクエスト上で使われるファイル形式のようなもの・・・と解釈していました。
上記のリンクにあるように例えばhtmlの場合だったら通常はtext/htmlになります。
html→text/html
jpg→image/jpeg
とかですね。通常だとこのように拡張子で対応するMIMETYPEがきまり、それによってApacheではそれに対応した処理を行います。これがhtmlの中にそのままPHPを入れても動かない理由になります。
この場合、htmlの拡張子の場合、PHP用のMIMETYPEとして扱ってあげればOKです。その命令が冒頭にあげた記述式だったんですね。
nginxの場合だとphp-fpmに似たような設定を書くことで対応できます。