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

Spring Boot配置ResourceHandlerRegistry静态资源404(file URL路径截断)求助

解决Spring Boot ResourceHandlerRegistry静态资源404问题

这个问题的核心原因是你配置的文件资源路径末尾缺少了斜杠,导致URL相对路径解析时出错。

问题分析

当你使用file:///home/alex作为资源位置时,这个URL会被解析为指向一个名为alex的文件(而非目录)。所以当FileUrlResource.createRelative尝试拼接相对路径blah/1234.txt时,URL解析规则会把基础URL的最后一段alex替换成目标路径,最终生成错误的file:/home/blah/1234.txt,自然找不到对应的资源。

解决方案

只需要在资源路径的末尾添加斜杠,明确告诉Spring这是一个目录路径即可。有几种可行的配置方式:

方式1:直接在URL末尾加斜杠

registry.addResourceHandler("/static/**")
        .addResourceLocations("file:///home/alex/"); // 注意末尾的斜杠

方式2:使用文件系统路径格式(同样加斜杠)

registry.addResourceHandler("/static/**")
        .addResourceLocations("file:/home/alex/");

方式3:通过Path生成带斜杠的URI(更可靠,避免手动加斜杠出错)

import java.nio.file.Paths;

// ...

registry.addResourceHandler("/static/**")
        .addResourceLocations(Paths.get("/home/alex").toUri().toString());

这种方式会自动生成带末尾斜杠的URI(比如file:///home/alex/),确保相对路径解析逻辑正确。

验证效果

配置完成后,当你请求localhost:8080/static/blah/1234.txt时,Spring会正确解析为/home/alex/blah/1234.txt,就能正常访问到目标静态资源了。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:23:38