OK、これはちょっと狂っているかもしれませんが、ここで私には1分間は負担してください。SSIパーサーはPHPで書かれていますか?
標準でSSIを使用してページヘッダー、フッター、およびメニューを含めるサイトで作業しています。インクルードされたファイルはSSI条件を使用してさまざまなブラウザを処理し、いくつかの#includeネスト、および#set/#ifトリッキーを使用してメニュー内の現在のページを強調表示します。言い換えれば、SSIの#includeディレクティブだけではありません。
私は美学を主張する人もいるかもしれませんが、実際には静的なHTMLに対してはうまく機能します。
問題:私はPHPスクリプトからSSIで解析された同じヘッダーとフッターのHTMLファイルを「#include」したいので、コードの重複を避けて、サイトの一貫した外観を維持してください。 PHPが通常のmod_php環境で実行されていた場合、PHPのvirtual()関数を使用してPHPを実行できます。残念ながら、サイトではFastCGI/suexecを使用してPHPを実行しています(VirtualHostを別のユーザーとして実行できるようになります)。これによりvirtual()が破損します。
私はPHPで書いたかなり単純なSSIパーサを使用しています(#includesと実際には単純な#if文を処理しますが)、もっと一般的な解決策が必要です。 SSIパーサーを書くと、SSIパーサーがPHPで書かれていることが分かりますか?当然ながら、私は、私が概説した制約の下で動作する他のソリューションにもオープンしています。
ありがとうございました。
私はSSIインクルードファイルを "#include"ネストし、 '#set' /'#if'トリッキー "* static * HTMLと呼ぶことはしません。 ;)そうでなければ、面白い質問。 :D – deceze
私が知っている唯一の実装はhttp://nanoweb.si.kz/manual/mod_include.htmlですが、これは3つの標準関数を実装しており、パーサーの多くを構成するものでもありません。 – mario
@deceze:ユーザーが要求したHTMLファイルのたびに同じ出力が生成されるという意味では静的です。私は、SSIを含むファイルは静的ではないことに同意します。 –