我需要哪种类型的Caddyfile配置来正确地为带有React-Router的React App(使用create-react-app创建)提供服务?基本上,domain.com/app/
(这是应用程序的根目录)应该重定向到index.html
,domain.com/app/sub
应该重定向到index.html
(路由将由react-router在前端完成) ,但是例如,domain.com/app/manifest.json
也不应重定向到任何地方,因为它是需要提供的实际文件。然后还有domain.com/app/static/
网址应按原样提供。
我当前的Caddyfile:
domain.com/app {
root /server/public/app
rewrite / {
to {path} /
}
}
这种类型的作品,但它也重定向domain.com/app/manifest.json
和所有domain.com/app/static/
网址。
如何告诉Caddy在路径中查找文件,如果该文件不存在,则重定向到根目录?文档暗示这是重写块应如何工作,但是我的配置文件中有问题,因为它似乎不起作用。
我已经尝试了许多示例,但是它们都还重定向了/ static /文件夹和manifest.json等。
答案 0 :(得分:1)
答案 1 :(得分:0)
我相信它可以按您期望的方式工作,我能够重现它,当您访问domain.com/app/manifest.json
时,它会返回一个JSON文件
答案 2 :(得分:0)
我只是在测试如何始终为index.html
服务,以使BrowserRouter正常工作,并最终得到以下Caddyfile:
/ {
tls off
gzip
log stdout
rewrite {
to {file} index.html
}
}
这样,它将始终尝试访问文件(脚本,样式,图像...),然后再退回投放index.html