ForceType application/octet-stream
Não deve ser necessário substituir o correto Content-Type
para forçar um download. A configuração do cabeçalho Content-Disposition
apropriado deve ser suficiente em todos os navegadores modernos.
you can create "aliases" of a folder using the same .htaccess file
Sim, mais ou menos. Embora você não seja capaz de usar o mesmo .htaccess
no diretório /files
- se é isso que você está sugerindo?
Tente o seguinte ... remova o arquivo .htaccess
no diretório /files
e adicione as seguintes diretivas ao arquivo .htaccess
na raiz do documento (ou subdiretório apropriado). Essas diretrizes podem precisar chegar perto do topo se você tiver diretivas existentes - a ordem pode ser importante.
RewriteEngine On
# Force download all direct requests to the ./files directory
RewriteCond %{REDIRECT_STATUS} ^$
RewriteRule ^files/ - [E=FORCE_DOWNLOAD:1,T=application/octet-stream]
# Internally rewrite requests for ./streams to ./files
RewriteRule ^streams/(.+) files/$1 [L]
# Only set the Content-Disposition header when forcing a download
Header set Content-Disposition attachment env=FORCE_DOWNLOAD
O código acima ainda substitui o Content-Type
ao forçar um download (por exemplo, T=application/octet-stream
flag no RewriteRule
). Embora eu acredite que isso deva ser evitado.
A verificação da diretiva RewriteCond
em relação a THE_REQUEST
REDIRECT_STATUS
impede solicitações para o diretório ./streams
"virtual" que também está sendo baixado. Ele garante que apenas solicitações "diretas" para o diretório ./files
sejam baixadas.