我的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
。但是,它却将其下载为 'download'。
如何为该下载设置自定义名称?
答案1
由于我不熟悉 Apache,所以不太确定这是否会起作用。但是快速谷歌一下,也许像下面这样的方法会起作用:
首先启用 apache 模块mod_headers 看这里如何做到这一点。
然后将 sites-enabled 中的目录块设置为:
<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.exe
或nav
。
这是我发给您的链接的改编示例。试试看。