Понятия не имею, работает ли он, но это будет моя первая попытка.
RewriteRule [^/]+\.pdf$ - [E=FILENAME:$0]
<FilesMatch "\.(?i:pdf)$">
Header set Content-Type application/octet-stream
Header set Content-Disposition "attachment; filename=%{FILENAME}e"
</FilesMatch>
EDIT Кажется, что некоторые установки Apache устанавливают префикс переменной env с REDIRECT_
RewriteRule [^/]+\.pdf$ - [E=FILENAME:$0]
Header set Content-Type application/octet-stream env=REDIRECT_FILENAME
Header set Content-Disposition "attachment; filename=%{REDIRECT_FILENAME}e" env=REDIRECT_FILENAME
Выше код не работает из коробки.В моем случае мне понадобился другой внутренний редирект.
Но зачем вам указывать имя файла в заголовке, если URL-адрес запроса также содержит имя файла?Все браузеры сохранят файл под именем в URL.Таким образом, переход на /path/test.pdf
приведет к тому, что браузеры предложат имя файла test.pdf
.