如何为 react-router 配置 Caddy 服务器

noj*_*ojs 6 react-router caddy

我需要什么样的 Caddyfile 配置才能正确地使用 react-router 为 react 应用程序(使用 create-react-app 创建)提供服务?基本上,domain.com/app/(这是应用程序的根)应该重定向到index.htmldomain.com/app/sub应该重定向到index.html(路由将由 react-router 在前端完成),但又例如domain.com/app/manifest.json不应该重定向到任何地方,因为它是一个实际的文件,需要送达。然后还有domain.com/app/static/应该按原样提供的 url。

我目前的 Caddyfile:

domain.com/app {
        root /server/public/app
        rewrite / {
                to {path} /
        }
}
Run Code Online (Sandbox Code Playgroud)

这种工作,但它也重定向domain.com/app/manifest.json和所有domain.com/app/static/网址。

如何告诉 Caddy 在路径中查找文件,如果它不存在则重定向到根目录?文档暗示这是重写块应该如何工作,但我的配置文件中有问题,因为它似乎不起作用。

我已经尝试了很多示例,但它们也都重定向了 /static/ 文件夹和 manifest.json 等。

sil*_*iot 7

您正在寻找的指令是try_files.

将请求 URI 路径重写为站点根目录中存在的第一个列出的文件。如果没有文件匹配,则不执行重写。

根据您的情况,您需要:

try_files {path} /index.html
Run Code Online (Sandbox Code Playgroud)


小智 0

我相信这正如您所期望的那样工作,我能够重现它,当您访问它时domain.com/app/manifest.json它会返回一个 JSON 文件