Angular 的单页应用中因为有用到锚点,所以只能用 browser router。假设目标地址为 app.com/target1。
在访问 app.com/target1 时,路由跳转到 app.com/target1/target2, 刷新页面后 404。
相关配置如下:
server {
listen 4300;
server_name business;
location / {
try_files $uri $uri/ /index.html;
root tempPath/dist/;
}
}
server {
listen 80;
server_name entry;
root tempPath/;
location ^~ /business {
proxy_pass http://localhost:4300;
}
}
关键字搜了 browser router with nginx
,看到的都是用 try_files $uri $uri/ /index.html
。我试着把最后一个参数改成 app.com/target1
所在的物理路径,也就是 tempPath/dist/
,错误日志会说:rewrite or internal redirection cycle while internally redirecting to "/index.html" 。后来想想,逻辑上确实是循环,此路不通。
从页面物理层面解决。就是每个路由都写个 html,但这真的很麻烦...
希望能在 1 的方向上给点建议。看上去只要在匹配到 /business 时停下来,直接转发到 html 入口就能解决了...
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.