我有一个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,则不需要太多的调整。