htmlでSSIとPHPの両方を使いたい時のhtaccess

Invalid argument supplied for foreach()でWarningエラーが出たので出ないようにした ひとまず書いてる

htmlで、共通ファイルをssiインクルードしているサイトがありました。
一部、日付判別でphpを使用することになりました。
html拡張子で、ssiとphpの共存(実行をすること)はできるのでしょうか?

結論

htaccessに記述すると可能。

ssiの許可とphpの許可

ssiインクルードしているサイトのhtaccessに、ssiの実行を許可する記述がありました。

Options +Includes
AddHandler server-parsed html

こちらにphpの実行を許可する記述を追記しました。

Options +Includes
AddHandler server-parsed html
AddHandler application/x-httpd-php .php .html

結果:phpの実行はうまくいったが、ssiインクルードが効かなくなりました。

ローカル環境はapache2.4.xだったので、ドキュメントを確認してみました。
https://httpd.apache.org/docs/2.4/ja/howto/ssi.html

すると、AddHandlerではなく、AddOutputFilterの例文がありました。
つまり、↓こうなります。

Options +Includes
AddOutputFilter INCLUDES .htm .html
AddHandler application/x-httpd-php .php .html

Apache2.x系では、「XBitHack on」の記述方法もありますね。以下の記述でうまくいくかもしれません。

ssiとphpのインクルードを両方使う

様々なサーバー環境がありますが、私の経験では以下の記述で解決することが多かったです。

Options +Includes
XBitHack on
AddHandler application/x-httpd-php .php .html

どれもうまくいかない時

どの記述方法もうまく行かない場合は、混在をあきらめてssiインクルードかphpインクルードか、どちらかを使います。

コメント

タイトルとURLをコピーしました