Apacheの設定方法を教えてください。http://servername/xxxx/yyyy.txt 左記URLでアクセスした場合、テキストの内容がそのまま表示されますが、ヘッダーとフッターを表示してyyyy.txtの内容がbodyタグの中に埋め込まれているHTMLを表示させたいと考えています。yyyy.txtを変更することなく実現する設定方法を教えていただけますか。(xxxxディレクトリ以下の全ての.txtファイルに、ヘッダーとフッダーを挿入する設定を教えていただけますか。)宜しくお願いします。

回答の条件
  • URL必須
  • 1人1回まで
  • 登録:2007/12/12 17:39:37
  • 終了:2007/12/17 01:08:00

回答(4件)

id:t_shiono No.1

t_shiono回答回数256ベストアンサー獲得回数222007/12/12 18:21:19

ポイント20pt

とりあえず、思いつくのはmod_rewriteと併用する方法です。

PerlやPHPなどでCGIが利用できることも前提となります。

この場合、

http://servername/show.php?file=yyyy.txt

といったアクセスをした際に、show.phpの処理として、ヘッダとフッタを加えて、yyyy.txtの内容を表示するようにします。

その上で、

xxxx以下のファイルに関して、

xxxx/AAAA.txt を show.php?file=AAAA.txt

と書き換えるようにmod_rewriteを設定してください。


何かの参考になれば。

id:er7

回答ありがとうございます。それも考えたのですが、Apacheの設定だけで済ませたいなぁという思いがあります。また何か情報がありましたら、コメント欄などでお願いいたします。

2007/12/12 18:27:34
id:cicupo No.2

cicupo回答回数13ベストアンサー獲得回数32007/12/13 16:32:54

ポイント26pt

表示するべきヘッダやフッタは、

他のファイルから読み込むと仮定します。


1) mod_layout

mod_layout はいかがでしょうか。

http://yumepage.gr.jp/home/kawando/other/header_footer.htm

レンタルサーバで、広告を自動的に挿入する際に

使われていたりするようです。

(ちょっと調べたところでは、古い情報しか見つかりませんでした。

バージョンによって挙動が異なるなど注意が必要なようです。)


2) php の auto_prepend_file / auto_apend_file

もうひとつの方法として、apacheの設定で

phpだと思わせてしまう方法もあります。

php が動いている場合、以下のような設定を

.htaccess 等に加えればOKです。

AddHandler php-script php txt
php_value auto_prepend_file header.txt
php_value auto_append_file footer.txt

(php-script は環境によっては php5-script かも知れません)


いずれの方法も、yyyy.txt には一切変更を必要としません。

id:er7

ありがとうございます。

2007/12/17 00:58:41
id:b-wind No.3

b-wind回答回数3344ベストアンサー獲得回数4402007/12/12 19:00:11

ポイント20pt

Linux/mod_layoutを使う - Dream-Seed -Wiki版-

標準モジュールではないけれど。

id:er7

どうもです。

2007/12/17 00:58:19
id:y-kawaz No.4

y-kawaz回答回数1421ベストアンサー獲得回数2262007/12/12 19:25:23

ポイント24pt

Alias と PHP を使うやりかたです。


まず以下のようなレイアウト用のphpを layout.php という名前で作成します。

<html>
<head>
<title>layout sample</title>
</head>
<body>
<?php echo htmlspecialchars($_SERVER['SCRIPT_NAME']); ?>
<pre style="background-color:#ccccff;padding:0.3em;border:1px solid blue;">
<?php echo htmlspecialchars(file_get_contents($_SERVER['DOCUMENT_ROOT'] . $_SERVER['SCRIPT_NAME'])); ?>
</pre>
</body>
</html>

次に htpd.conf に以下のような Alias を設定します。

AliasMatch ^/xxx/ /path/to/layout.php

この状態で http://servername/xxx/yyyy.txt にアクセスすれば期待通りの動きになると思います。

id:er7

ありがとうございます。

2007/12/17 00:58:48
  • id:y-kawaz
    1回しか回答できないようなので、上の回答に加えてここでもう一案。
    まず、httpd.confに以下のような設定を書きます。
    >|
    ExtFilterDefine layoutFilter mode=output cmd="/path/to/layout.sh"
    <Location /xxx>
    SetOutputFilter layoutFilter
    AddType text/html .txt
    </Location>
    |<
    ExtFilterDefine の cmd に指定している layout.sh は実行可能ファイルで、別に php でも perl でも構いません。
    これを、例えば以下のような内容で作成します。
    >|sh|
    #!/bin/sh
    cat <<LAYOUT
    <html>
    <head>
    <title>layout sample</title>
    </head>
    <body>
    <pre>`cat "$SCRIPT_FILENAME"`</pre>
    </body>
    </html>
    LAYOUT
    ||
    この例ではファイルの内容に関してエスケープ処理をしていないのでこのままでは危険ですが要点は伝わるかと。
  • id:er7
    コメント欄でも、ありがとうございます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません