Eu descobri que isso faz o que eu quero:
<Location /textfiles>
SetEnvIf Request_URI "^.*/([^/]*)$" FILENAME=$1
Header set "Content-disposition" "attachment; filename=%{FILENAME}e"
UnsetEnv FILENAME
</Location>
Eu tenho um diretório de arquivos de texto que eu estou servindo com o apache 2. Normalmente, quando eu (ou qualquer usuário) acessar os arquivos, eles os vêem em seu navegador. Eu quero 'forçar' * o navegador para abrir uma caixa de diálogo 'Salvar como'. Eu sei que isso é possível com os cabeçalhos Content-Disposition
( mais informações ).
Existe alguma maneira de ativar isso para cada arquivo?
Idealmente, gostaria de algo assim:
<Directory textfiles>
AutoAddContentDispositionHeaders On
</Directory>
E, em seguida, o apache definiria o cabeçalho de disposição de conteúdo correto, inclusive usando o mesmo nome de arquivo.
Algo parecido com isso pode ser possível com a diretiva apache Header
.
Pontos de bônus, se incluídos no apache no debian.
Eu poderia fazer um simples script PHP wrapper que recebesse um argumento filename
, fizesse a chamada para header(...)
e depois imprimisse o arquivo, mas eu teria que validar a entrada etc., é o que estou tentando evitar .
* Eu sei que você não pode realmente forçar as coisas quando se trata da web
mod_headers
deve ser o que você está procurando:
<IfModule mod_headers.c>
<Location ~ ".*/textfiles/.*">
Header set Content-Disposition attachment
</Location>
</IfModule>
Tags apache-2.2 http http-headers