我写了一个新的多页项目,想用来代替已有的线上项目,在配置 nginx 的时候遇见了这个问题。
已有的老项目有多个路由:
/react/app 老
/react/app/a 老
/react/app/b 老
/react/app/c 老
我现在写了一个新项目,具有两个路由:
/react/app 新
/react/app/new 新
请问该如何配置 nginx,使得用户可以访问:
/react/app 新
/react/app/a 老
/react/app/b 老
/react/app/c 老
/react/app/new 新
我尝试过:
在老的nginx配置之前加上^~
配置
location ^~ /react/app {
alias path/to/my/dist/
}
这不行,因为 abc 也变成新的了
使用 if 配合 location
if ($uri !~ "(a|b|c)") {
location ^~ /react/app {
alias path/to/my/dist/
}
}
告诉我不能在这个地方使用 alias
正则
location ~* ^/react/app(new)?$ {
alias path/to/my/dist
}
实测不行,猜测是访问 index.html 又匹配到后面老的配置了
nginx 的顺序是从上到下的,那个最佳匹配就走哪一个,所以你的 location 按照这个顺序去写就好了。
大概是