2010-10-20 11 views
14

Tengo esto esta regla en mi archivo .htaccess para obligar a los archivos vinculados a descargar en lugar de abrir en el navegador:Establecer el encabezado Content-Disposition en los archivos adjuntos solo en los archivos de un directorio determinado?

<FilesMatch "\.(gif|jpe?g|png)$"> 
    ForceType application/octet-stream 
    Header set Content-Disposition attachment 
</FilesMatch> 

¿Hay una manera de alterar la RegExp por lo que sólo se aplica a los archivos de una cierta ¿directorio?

Gracias

+4

¿Por qué está usando 'application/octet-stream'? Esto simplemente le dice al navegador que no sabe cuál es el tipo de archivo. Y eso no es verdad Para forzar una descarga, 'Contenido-Disposición: archivo adjunto' es todo lo que necesita. – TRiG

+0

Esto no es del todo cierto. Internet Explorer no siempre respetará Content-Disposition. Para obligar a IE a ofrecer la solicitud de descarga, es mejor usar application/octet-sream. – aaronbauman

Respuesta

12

Probablemente necesite colocar las directivas en el archivo .htaccess en el directorio particular.

+5

¡A ha! ¡Sí! ¡Esta debe ser la solución, maldita sea mi mente inflexible! – DonutReply

2

lo puso en una directiva <Location>, y/o modificar la expresión regular para excluir barras o según el caso.

+0

La ubicación no parece funcionar en los archivos htaccess, ¿hay alguna otra manera? – DonutReply

9

Como dijo @gumbo, ponga el archivo .htaccess en la carpeta del nivel más alto que desea afectar. y esas configuraciones llegarán a las subcarpetas. Es posible que también desee asegurarse de que el módulo headers esté habilitado antes de usar esto en su archivo htaccess. La siguiente línea generará un error si el módulo de cabeceras no está activado:

Header set Content-Disposition attachment 

He aquí un ejemplo de que las fuerzas de descarga de archivos mp3 sólo si el módulo de cabeceras está habilitado:

<IfModule mod_headers.c> 
    <FilesMatch "\.(mp3|MP3)$"> 
     ForceType audio/mpeg 
     Header set Content-Disposition "attachment" 
     Allow from all 
    </FilesMatch> 
</IfModule> 

Nota: lo hace no habilita el módulo, simplemente ignora cualquier cosa dentro de las etiquetas IfModule si el módulo no está habilitado.

Para habilitar los módulos de Apache, deberá editar su archivo httpd.conf o en el servidor wamp puede hacer clic en el icono de la bandeja de wamp y seleccionar "Apache -> Apache Modules -> headers_module" o asegurarse de que esté marcado.

+0

¿cuáles serán los cambios para apache tomcat v8.0? – dearvivekkumar

Cuestiones relacionadas