设置自定义名称下载文件

设置自定义名称下载文件

我的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.exenav

这是我发给您的链接的改编示例。试试看。

相关内容