※ ChatGPTを利用し、要約された質問です(原文:【Apache】フリーのホームページサービスのようにhtmlファイルに広告を自動付加させたい)
【Apache】フリーのホームページサービスのようにhtmlファイルに広告を自動付加させたい
このQ&Aのポイント
フリーのホームページサービスのように、htmlファイルに広告を自動的に付加させる方法を探しています。Apacheの設定やモジュールの追加などが必要なのでしょうか?特に、Apache 2.0.63で、httpd.confを編集することができるVPS環境の場合について教えてください。
auto_prepend_fileとauto_append_fileディレクティブを使用する方法も試しましたが、メインのphpファイルでのバッファリングの処理やexitの影響などで問題がありました。また、htmlファイルには効果がないようです。そこで、他の方法をご存知の方がいらっしゃれば、教えていただきたいです。
ただし、.htaccessファイルが有効な場合には、htmlファイルがphpファイルとして認識されない場合があることに注意してください。この点も解決方法をお教えいただければ幸いです。
【Apache】フリーのホームページサービスのようにhtmlファイルに広告を自動付加させたい
フリーのホームページサービス(たとえばライブドアのブログ)の場合、
htmlファイルをアップロードして、それをブラウザでみると、
html中のある箇所に自動的にバナーが埋め込まれています。
これはどうやって実現できるのでしょうか?
なお、Apache 2.0.63で、
httpd.confをいじれます。
(レンタルサーバのVPS環境)
Apacheのアップデートや、モジュールの追加もできます。
apache関係をなんか設定する必要があるのだろうという想像はつきますが・・・
(php なら・・・以下のようにできそうなのですが。。。)
//-----------------------------------------------------------
●auto_prepend_file ディレクティブ
(メインファイルの前に自動的に付加されるファイルの名前を 指定します)
●auto_append_file ディレクティブ
(メインファイルの後に自動的に追加されるファイルの 名前を指定します。)
を設定し、
auto_prepend_fileで指定したファイルを以下のように:
<?php
//-----------------------------------------------------------
ob_start();
//-----------------------------------------------------------
?>
auto_append_fileで指定したファイルを以下のように:
<?php
//-----------------------------------------------------------
//ob_get_length 関数は、出力のバッファリングがアクティブでない場合には、FALSE を返します
if( ob_get_length() === FALSE ) {
//エラー
echo "バッファがアクティブでないです。";
exit;
}
$buffer = ob_get_contents();
$pattern = '/(<body[^>]*>)/i';
$replacement = '$1' . '<div>ここに広告バナー!!!</div>';
$replaced_buffer = preg_replace($pattern, $replacement, $buffer);
//バッファを消去し、バッファリングを非アクティブにする
ob_end_clean();
//ブラウザに出力して終了
print $replaced_buffer;
exit;
//-----------------------------------------------------------
?>
でもこれだと、
●メインのphpファイルのなかでbufferを扱うときにいろいろめんどいですし、
●メインのphpファイルでexitをよばれると、auto_append_fileは使用されないそうですし、
●htmlファイルに対して効果がない・・・phpファイルとして拡張子を認識させれば、効果ありますが・・・
なんか気持ち悪い(<?phpとかくとそこからphp構文になってしまう)
&
「.htaccess」が有効だと、「.htaccess」によって、htmlはphpじゃない、とされてしまうケースがある。
といったかんじです。
//-----------------------------------------------------------
ご存じのかた、どうぞ、よろしくお願いいたします。
お礼
ありがとうございます。 まさにこれですね。 あと、OS言ってなかったですね。すみません。 CentOS4.4です。 で、調べてみたところ、 mod_layoutとは@はてなダイアリー http://d.hatena.ne.jp/keyword/mod_layout にCVSの情報があり、 はじめての自宅サーバ構築 Fedora/CentOS - Webページヘッダー及びフッター自動挿入(mod_layout) http://kajuhome.com/modlayout.shtml に、Fedora/CentOS に特化した情報がありました。 上記リンクによると、 Apacheが2.0系か2.2系か(さらには、ディストリによって)導入方法が異なるようです。 そこで、 念のために、 【Apacheが2.0系の場合に限り】、mod_layoutを有効にする。というようにしたいのですが、 そんな設定(apache側で?mod_layout側で?あるいは両方必要?)は可能でしょうか? 【Apacheが2.0系の場合に限り】という意味合いのことをhttpd.confにかければ、すごいラクなのですが・・・ もしご存知でしたら、お教えいただければ幸いです。 また、もしご存じでしたら・・・ content negotiationをしている場合に このモジュールをつかっても、 特に問題はないのでしょうか? あるいは問題があるとしたら、対処方法はご存じないでしょうか? よろしくお願いいたします。