Apache-2.2

如何在 apache 中為文件發送 Content-Disposition 標頭?

  • July 17, 2011

我有一個使用 apache 2 提供的文本文件目錄。通常,當我(或任何使用者)訪問他們在瀏覽器中看到的文件時。我想“強制”*網路瀏覽器彈出一個“另存為”對話框。我知道這可能與Content-Disposition標題有關(更多資訊)。

有沒有辦法為每個文件打開它?

理想情況下,我想要這樣的東西:

<Directory textfiles>
  AutoAddContentDispositionHeaders On
</Directory>

然後 apache 將設置正確的內容處置標頭,包括使用相同的文件名。

Header使用 apache指令可能會發生這樣的事情。

如果它包含在 debian 中的 apache 中,則可以加分。

我可以做一個簡單的 PHP 包裝腳本,它接受一個filename參數,呼叫header(...)然後列印文件,但是我必須驗證輸入等。這是我試圖避免的工作。


  • 我知道在網路方面你實際上不能強迫事情

我發現這可以滿足我的要求:

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

mod_headers應該是你正在尋找的:

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

引用自:https://serverfault.com/questions/101948