多くのウェブページにヘッダーを含めたいので、単一のファイルを作成してすべてのページに含めたいです。私が見つけた 1 つの方法は SSI (サーバー側インクルード) によるものですが、Web ページの拡張子を Html から sHtml に変更する必要があります (何らかの制限により実行できません)。
拡張子を変更せずにこれを行う方法はありますか?
前回チェックしたとき(数年前)、Apacheでhtmlファイルをhttpdプロセスで実行可能にすると、名前を変更しなくてもshtmlのように動作します。
これを行うことのセキュリティへの影響は、あなた自身の評価に任せます。
jQuery/AJAX アプローチを使用できます
$.get('ajax/test.html', function(data) {
$('.result').html(data);
alert('Load was performed.');
});
あなたの最善の方法は、インクルードを含む PHP ファイルです。SSI はうまく機能しますが、.shtml ファイルが必要です。
推奨されない方法は、iframe を使用してヘッダーを含めることです。Javascript も使用できますが、クライアント側のインクルードを使用するのは適切ではありません。jQueryもクライアント側のインクルードになります。
SSI を使用するように .html ファイルを設定することはできますが、制限がある場合、これはおそらく通過できない制限です。ホストされたサーバー アカウントでは、ほとんどの場合、これが許可されません。
SSI に関する Apache サーバーのドキュメント。 http://httpd.apache.org/docs/current/howto/ssi.html
サーバーで SSI を許可するには、httpd.conf ファイルまたは .htaccess ファイルに次のディレクティブを含める必要があります。
オプション +Includes これは、ファイルが SSI ディレクティブのために解析されることを許可することを Apache に伝えます。ほとんどの構成には、互いにオーバーライドできる複数の Options ディレクティブが含まれていることに注意してください。最後に評価されることを保証するために、SSI を有効にしたい特定のディレクトリにオプションを適用する必要があるでしょう。
SSI ディレクティブのために解析されるファイルだけではありません。どのファイルを解析する必要があるかを Apache に伝える必要があります。これには 2 つの方法があります。次のディレクティブを使用して、.shtml などの特定のファイル拡張子を持つファイルを解析するように Apache に指示できます。
AddType text/html .shtml AddOutputFilter INCLUDES .shtml このアプローチの 1 つの欠点は、SSI ディレクティブを既存のページに追加する場合、そのページの名前とそのページへのすべてのリンクを変更する必要があることです。これらのディレクティブが実行されるように、.shtml 拡張子を付けます。
もう 1 つの方法は、XBitHack ディレクティブを使用することです。
XBitHack の XBitHack は、実行ビットが設定されている場合、SSI ディレクティブのファイルを解析するように Apache に指示します。したがって、ファイル名を変更するのではなく、既存のページに SSI ディレクティブを追加するには、chmod を使用してファイルを実行可能にするだけで済みます。
chmod +x pagename.html してはいけないことについての簡単なコメント。.shtml ファイル名をいじる必要がないように、すべての .html ファイルを SSI 用に解析するように Apache に指示することを推奨する人をときどき見かけます。これらの人々は、おそらく XBitHack について聞いたことがないでしょう。覚えておくべきことは、これを行うことで、たとえ SSI ディレクティブが含まれていなくても、クライアントに送信するすべてのファイルを Apache が読み取る必要があるということです。これは処理をかなり遅くする可能性があり、良い考えではありません。