我有两个 app,一个是 vue + vue-router 生成的静态页面(app-1),一个是 php 动态页面(app-2)。
我现在有一个需求就是,app-1 能匹配到
http://xx.com
,
http://xx.com/
,
http://xx.com/test1
,
http://xx.com/test2
这几个路由,app-2 则负责匹配其他路由。
我在配置里用了精准匹配,配置如下:
# app-1 精准匹配
location = / {
# 这里是 app-1
root app-1;
index index.html;
}
# app-1 的另外两个路由
location ~* ^/(test1|test2) {
# 这里是 app-1
root app-1;
}
# 泛匹配
location / {
# 这里是 app-2
root app-2;
index index.php;
}
# php 解析相关
location ~ [^/].php(/|$) {
fastcgi_pass http://127.0.0.1:9000;
fastcgi_index index.php;
......
}
然后测试的时候,我访问 http://xx.com
总是会路由到 app-2 的页面,精准匹配如果命中后不应该是直接返回命中结果的吗,为什么还会经过后面 app-2 的泛匹配?如果我在精准匹配里改成 return 404;
它倒是能好好如愿。
此外,访问 http://xx.com/test1
以及 http://xx.com/test2
会直接返回 404,可能是因为这两个路由是根据 vue-router 生成的,实际上并不存在 test1 这些目录。
请问我该如何修改配置以实现我上面说的需求?
望能不吝赐教,谢谢。
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…