How to send Content-Disposition headers in apache for files?
I have a directory of text files that I'm serving out with apache 2. Normally when I (or any user) access the files they see them in their browser. I want to 'force'* the web browser to pop up a 'Save as' dialog box. I know this is possible to do with the Content-Disposition
headers (more info).
Is there some way to turn that on for each file?
Ideally I'd like something like this:
<Directory textfiles>
AutoAddContentDispositionHeaders On
</Directory>
And then apache would set the correct content disposition header, including using the same filename.
Something like this might be possible with the apache Header
directive.
Bonus points if it's included by standing in apache in debian.
I could do a simple PHP wrapper script that takes in a filename
argument, makes the call to header(...)
and then prints the file, but then i have to validdate input etc. that's work I'm trying to avoid.
* I know you can't actually force things when it comes to the web
Solution 1:
I have discovered that this does what I want:
<Location /textfiles>
SetEnvIf Request_URI "^.*/([^/]*)$" FILENAME=$1
Header set "Content-disposition" "attachment; filename=%{FILENAME}e"
UnsetEnv FILENAME
</Location>
Solution 2:
mod_headers
should be what you are looking for:
<IfModule mod_headers.c>
<Location ~ ".*/textfiles/.*">
Header set Content-Disposition attachment
</Location>
</IfModule>