【问题标题】:Nginx serve a file without the filename in the adress barNginx 在地址栏中提供没有文件名的文件
【发布时间】:2021-05-21 06:10:55
【问题描述】:

是否只有 nginx 指令才有可能出现以下行为?

我要访问的页面: https://example.com/xyz 在地址栏中按回车键时,我希望立即下载文件 abc.tst 以呈现给用户,但地址栏不应更改,它应该“停留”在https://example.com/xyz 上而不是转到https://example.com/abc.tst 和名称下载的文件不应更改为 xyz。

我尝试过各种重写规则或位置,但似乎无法弄清楚...

【问题讨论】:

    标签: nginx url-rewriting


    【解决方案1】:

    您需要使用Content-Disposition HTTP 标头来指定不同于xyz 的文件名:

    location = /xyz {
        alias /path/abc.tst;
        add_header Content-Disposition 'attachment; filename="abc.tst"';
    }
    

    您可能还需要为此文件指定 MIME 类型,使用 default_type 指令,用于通用二进制数据尝试

    default_type application/octet-stream;
    

    【讨论】:

    • 谢谢,这听起来和看起来很合理,但不幸的是它给了我 404,我会继续尝试纠正我怀疑的错误......
    • 您需要指定abc.tst的完整路径包括文件名本身。而且我把location /xyz改成了location = /xyz,更正确。
    • 完整(绝对)路径起到了作用,因为我在服务器指令中指定了根目录,我在别名中指定了相对路径。非常感谢,这正是我所要求的,对我帮助很大。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 2016-01-02
    • 2021-01-30
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 2020-05-03
    相关资源
    最近更新 更多