如何configurationWeb / FTP服务器,使其下载.sh文件,而不是显示其内容

我有一个FTP服务器(vsftpd),有很多种类的文件。 通常当你在浏览器中点击.tar.gz文件时,它开始下载它。

问题是当用户点击.sh文件时,文件没有下载,而是其内容显示在浏览器中。

我应该configurationFTP或Web服务器来强制它下载.sh文件?

编辑:首先,Web服务器是Apache。 但是,据我所知,Web服务器不会干扰请求,因为使用“ ftp:// ”协议而不是“ http:// ”。 也许这就是Apache规则被忽略的原因(因为Apache没有收到任何请求)。 FTP服务器直接处理所有的客户端请求。

考虑到所有这些。 有没有办法configurationFTP服务器来正确处理.sh文件?

在Apache中,您可以执行以下操作,即使是最不情愿的Web浏览器(我在看你,IE)下载一个文件:

<FilesMatch *.sh> ForceType application/octet-stream Header set Content-Disposition attachment </FilesMatch> 

这应该添加到虚拟主机或虚拟主机内的目录。

你使用什么Web服务器软件?

这通常与MIMEtypes相关。 根据Web服务器的不同,您可能需要编辑相关的MIMEtypes文件(比如/etc/mime.types,或者对于nginx,/etc/nginx/mime.types,尽pipe在/ etc / nginx / nginx.conf文件)并添加.sh扩展名。

在Apache上,有一个“mime_magic_module”。 如果打开,它将检测到一个文件是一个shell脚本,并将MIMEtypes设置为“application / x-shellscript”或“application / x-sh”。 如果您的networking服务器没有这种自动检测,您可以添加如下内容:

 application/x-sh sh 

到等效的MIMEtypes文件。

如果你做curl -Iv http://www.example.com/foo.sh你将Content-Type:头指示什么Web服务器认为它所服务的文件是。

如果Web服务器可以添加一个HTTP头,你应该能够把它closures。 就像是:

内容处置= attachemnt; 文件名= “abcd.sh”

如果浏览器直接向FTP服务器发送FTP,则不需要太多的调整。