前端项目访问路径加统一前缀
背景:根据“统一入口、集中代理”的数字化转型要求,多个项目要发布至同一个域名下,通过域名后增加统一前缀来区分及路由至指定的服务,例如统一域名下:
门户网站:ceshi.zjjjrrr.com:9103
系统a: ceshi.zjjjrrr.com:9103/aaa
系统b: ceshi.zjjjrrr.com:9103/bbb
以若依前端为例,访问路径加统一前缀步骤:
- vue.config.js文件修改publicPath属性
module.exports = {
// 部署生产环境和开发环境下的URL。
// 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上
// 例如 https://www.tele.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.tele.vip/admin/,则设置 baseUrl 为 /admin/。
publicPath: process.env.NODE_ENV === "production" ? "/citylineinput/" : "/",
// 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist)
outputDir: 'citylineinput',
// 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下)
assetsDir: 'static',
……
}
官方参考文档:
cli.vuejs.org/zh/config/#…
ps:改完第一步还需要设置路由前缀,不然一刷新前缀就没有了。踩过的坑!!!
- 页面路由加前缀
router下的index.js new Router(); 新增 base属性
export default new Router({
mode: 'history', // 去掉url中的#
base: process.env.NODE_ENV === "production" ? "/citylineinput/" : "/",
scrollBehavior: () => ({ y: 0 }),
routes: constantRoutes
})
3.增加请求后端前缀 设置VUE_APP_BASE_API属性值
VUE_APP_BASE_API = '/citylineinput/prod-api'
ps:改完第三步还需要设置nginx配置,不然一刷新就是404或者nginx的欢迎页。也是踩过的坑!!!
4.nginx代理try_files属性修改
location /citylineinput {
root /data/testLzz;
try_files $uri $uri/ /citylineinput/index.html;
}
try_files说明:
1.按指定的file顺序查找存在的文件,并使用第一个找到的文件进行请求处理
2.查找路径是按照给定的root或alias为根路径来查找的
3.如果给出的file都没有匹配到,则重新请求最后一个参数给定的uri,就是新的location匹配
4.结尾的斜杠表示文件夹,如$uri/
5.如果所有的文件都找不到,则内部重定向至最后一个参数