質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Q&A

解決済

1回答

3544閲覧

mod_ext_filterを使ったHTMLの自動挿入

1nakaji

総合スコア187

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

0グッド

0クリップ

投稿2016/10/14 10:27

無料レンタルサーバーなどで、
ヘッダーやフッターに自動で広告が
挿入されるものがあります。

mod_ext_filterを使うと、
同じようなことができるということで、
試したところできました。

━━━━━━━━━━━━━━━━━━
<IfModule mod_ext_filter.c>
ExtFilterDefine overwritetext mode=output intype=text/html
cmd="/bin/sed 's|</body>|<p>test.</p></body>|'"
<FilesMatch ".(html|php)$">
SetOutputFilter overwritetext
</FilesMatch>
</IfModule>
━━━━━━━━━━━━━━━━━━

今はこんな感じで設定を書いています。

ただこれだと内容を固定で表示することはできますが、
自動挿入するHTMLを柔軟に変更ができません。

ドキュメントルート内のHTMLファイルに
アクセスがある度に特定のスクリプトを実行して、
表示するHTMLを変更したいです。

サーバーはAWSのEC2インスタンスです。

何かいい方法がありましたら、
教えていただけますと幸いです。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ドキュメントルート内のHTMLファイルに
アクセスがある度に特定のスクリプトを実行して、
表示するHTMLを変更したいです。

cmdパラメータにご自分で作った特定のスクリプトを指定すれば、アクセスがある度にそれが実行されると思います。

詳しくは、mod_ext_filterモジュールのドキュメントを見てください。

また、「mod_ext_filter」というキーワードでウェブ検索すれば、設定の実例も見つかるはずです。


(以下、20:46のコメントへの回答)

━━━━━━━━━━━━━━━━━━
cmd="/bin/sed 's|</body>|<p>test</p></body>|'"
━━━━━━━━━━━━━━━━━━
という感じで置換しているんですが、
「test」というのを別ファイルから読み込むとかって
できるんでしょうか?

例に挙げておられる「cmd=」のあとの"…"の中身は、SEDというプログラミング言語で書かれたプログラムを実行するコマンドです。このSEDのプログラムによって、HTMLデータの内容が置換されています。

つまり、mod_ext_filterモジュール自身は、どんな置換をするかについてノータッチなんです。入力されたHTMLデータをcmdで設定されたコマンドに入力し、コマンド実行の結果として出てくるものを出力しているだけです。データをファイルから読み込んだりする処理は、コマンドのなかでやらなければなりません。

SEDでもファイルを読み込んでそれを置換に使うようなプログラムは書けます。しかし、そのようなちょっと高度なことをやりたいのなら、他のプログラミング言語を使ったほうがいいでしぃう。自分に合いそうなプログラミング言語を探してみてください。

投稿2016/10/17 10:52

編集2016/10/17 13:35
ikedas

総合スコア4227

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1nakaji

2016/10/17 11:07

ご連絡ありがとうございます。なるほどそういうものがあったんですね。勉強不足でした。一度試してみようと思います。
1nakaji

2016/10/17 11:46 編集

ちょっと別件なのですが、同じmod_ext_filterについて。 ━━━━━━━━━━━━━━━━━━ cmd="/bin/sed 's|</body>|<p>test</p></body>|'" ━━━━━━━━━━━━━━━━━━ という感じで置換しているんですが、 「test」というのを別ファイルから読み込むとかって できるんでしょうか? ━━━━━━━━━━━━━━━━━━ $test = "hello"; cmd="/bin/sed 's|</body>|<p>$test</p></body>|'" ━━━━━━━━━━━━━━━━━━ イメージはこういうことができれば、 かなりスッキリすると思いまして。
1nakaji

2016/10/17 15:07

ありがとうございます。いろいろ試してみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問