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


8

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

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

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

<Directory textfiles>
   AutoAddContentDispositionHeaders On
</Directory>

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

このようなことは、apache Headerディレクティブで可能になるかもしれません。

debianのapacheに立つことで含まれる場合のボーナスポイント。

filename引数を取り、呼び出しをheader(...)行い、ファイルを出力する単純なPHPラッパースクリプトを実行できますが、入力を検証する必要があります。これは回避しようとしている作業です。


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

回答:


11

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

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

ファイル名の最後の「e」は何ですか?それなしではうまくいかないようですが、何ができるのかわかりません。
Mark E. Haase 2013

「環境変数の内容」という意味ですFILENAME(mod_headersのドキュメントを参照してください:httpd.apache.org/docs/current/mod/mod_headers.html
Ale

1

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

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

良いスタートですが、そこにファイル名を入れて、(同じ)ファイル名がポップアップされるようにします。しかし、私は同様の解決策を見つけました
Rory
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.