设置自定义名称来下载文件

我的sites-available有以下configuration文件sites-available

 <VirtualHost *:80> ServerName my.domain RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] </VirtualHost> <VirtualHost *:443> ServerName my.domain DocumentRoot /var/www/html ErrorLog /var/www/logs/error.log CustomLog /var/www/logs/access.log combined SSLEngine on SSLCertificateFile /var/www/certs/certificate.pem SSLCertificateKeyFile /var/www/certs/private.key SSLCertificateChainFile /var/www/certs/ca_bundle.pem <Directory /var/www/html> Options -Indexes AllowOverride All Require all granted </Directory> <Directory /var/www/html/nav> DirectoryIndex nav.exe AllowOverride All Require all granted </Directory> </VirtualHost> 

而当我去https://my.domain/nav ,我期望它下载文件为nav.exe 。 但相反,它下载为“下载”。

如何为此下载设置自定义名称?

不太确定这是否会起作用,因为我不熟悉Apache。 但一个快速的谷歌,也许像下面的东西会工作:

首先启用apache模块mod_headers 在这里看到如何做到这一点。

然后将您的目录块设置为启用网站:

 <Directory /var/www/html/nav> DirectoryIndex nav.exe AllowOverride All Require all granted SetEnvIf Request_URI "^.*/([^/]*)$" FILENAME=$1 Header set "Content-disposition" "attachment; filename=%{FILENAME}e" UnsetEnv FILENAME </Directory> 

{FILENAME}结尾处的e显然意味着FILENAME环境的内容。 所以不要离开。 如果这个工程,我不知道这是否会导致一个文件,要被称为nav.exenav

这是我发给你的链接的一个改编样本。 试试看看。