You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx try_files指令无法指定静态文件,请求解决方案

Nginx配置:请求/abcd返回abcd.html,其他请求返回500

你的问题出在try_files的匹配逻辑上:当前配置里try_files $uri $uri/ =404会去查找/usr/share/nginx/html/abcd这个不带.html后缀的文件,但你目录里实际存在的是abcd.html,所以匹配不到才返回404。而$uri.html能正常工作,是因为它自动拼接了.html后缀,正好对应你目录里的文件。

给你两种可行的配置方案:

方案一:精准匹配location(推荐)

用精准匹配的location处理/abcd请求,其他请求直接返回500,这种方式比用if更符合Nginx的配置规范:

# 所有非/abcd的请求直接返回500
location / {
    return 500;
}

# 精准匹配/abcd请求,返回对应的html文件
location = /abcd {
    root /usr/share/nginx/html;
    try_files $uri.html =404;
}

方案二:在同一个location内调整逻辑

如果一定要在根location里处理,可以直接指定try_files的目标为$uri.html:

location / {
    root /usr/share/nginx/html;
    # 非/abcd请求返回500
    if ($request_uri != /abcd) {
        return 500;
    }
    # 直接查找带.html后缀的文件
    try_files $uri.html =404;
}

两种方案都能实现你要的效果:请求/abcd时返回abcd.html,其他任何请求返回500。

内容的提问来源于stack exchange,提问作者I have 10 fingers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 21:29:52