web-dev-qa-db-ja.com

ファイルのApacheでContent-Dispositionヘッダーを送信する方法

私は、Apache 2で提供しているテキストファイルのディレクトリを持っています。通常、私(または任意のユーザー)がファイルにアクセスすると、ブラウザに表示されます。 Webブラウザに「強制」*して、「名前を付けて保存」ダイアログボックスをポップアップ表示したい。これは_Content-Disposition_ヘッダー( 詳細 )で実行できることを知っています。

ファイルごとにオンにする方法はありますか?

理想的には私はこのようなものが欲しい:

_<Directory textfiles>
   AutoAddContentDispositionHeaders On
</Directory>
_

そして、Apacheは、同じファイル名の使用を含め、正しいコンテンツ処理ヘッダーを設定します。

このようなことは、Apache Headerディレクティブで可能になる場合があります。

それが含まれている場合は、debianのApacheに立ってボーナスポイントを獲得します。

単純なPHP filename引数を取り、header(...)を呼び出してからファイルを出力するラッパースクリプト有効な日付入力など、回避しようとしている作業です。


*ウェブに関しては、実際に強制することはできない

8
Rory

私はこれが私が望むことをすることを発見しました:

<Location /textfiles>
    SetEnvIf Request_URI "^.*/([^/]*)$" FILENAME=$1
    Header set "Content-disposition" "attachment; filename=%{FILENAME}e"
    UnsetEnv FILENAME
</Location>
11
Rory

mod_headersはあなたが探しているものでなければなりません:

<IfModule mod_headers.c> 
  <Location ~ ".*/textfiles/.*"> 
    Header set Content-Disposition attachment
  </Location>
</IfModule>
1
Christian