在URL中使用点的Spring MVC资源映射

时间:2018-05-18 23:07:00

标签: java spring-mvc spring-boot

我正在尝试在Universal Links的iOS应用中添加支持。因此,我们的服务器需要在路径/.well-known/apple-app-site-association上提供json文件。我在文件夹apple-app-site-association中创建了文件名为src/main/resources/well-known/的文件,并将以下内容添加到我们的应用程序配置中:

@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry)
{
    registry.addResourceHandler(".well-known/**").addResourceLocations("classpath:/well-known/");
}

然而,这导致来自服务器的404。在尝试了很多不同的事情之后,我发现如果我把这个点拿出来:

@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry)
{
    registry.addResourceHandler("well-known/**").addResourceLocations("classpath:/well-known/");
}

并导航到/well-known/apple-app-site-association,它工作得很好。但是,它需要在网址中包含.

我有什么办法让这项工作成功吗?我们使用的是Spring 4.3.7和Spring Boot 1.4.5。

1 个答案:

答案 0 :(得分:0)

在深入研究这个问题时,我在Javadoc中看到addResourceHandler以下内容:

Patterns like "/static/**" or "/css/{filename:\\w+\\.css}"} are allowed.

因此,我将映射更新为如下所示:

registry.addResourceHandler("{filename:\\.well-known}/**").addResourceLocations("classpath:/well-known/");

在此更改后,事情按预期工作。我发现在冒号之前放什么并不重要,所以这就是我最终得到的结果:

registry.addResourceHandler("{wellKnownFolder:\\.well-known}/**").addResourceLocations("classpath:/well-known/");