背景: 由于子域名有限,我们需要将不同的前端项目进行二级目录区分。
一、项目
现有三个项目:
bsrm-web-manage
bsrm-web-operator
bsrm-web-testingorganization
二、期望访问路径
http://bsrm.life.com/bsrm-web-manage
http://bsrm.life.com/bsrm-web-operator
http://bsrm.life.com/bsrm-web-testingorganization
三、React 配置
1. webpack.default.js
添加
publicPath
output: {// ...publicPath: process.env.NODE_ENV === "development" ? '/' : '/bsrm-web-manage'
},
output: {// ...publicPath: process.env.NODE_ENV === "development" ? '/' : '/bsrm-web-operator'
},
output: {// ...publicPath: process.env.NODE_ENV === "development" ? '/' : '/bsrm-web-testingorganization'
},
2. index.jsx
<BrowserRouter>
标签中,添加basename
export default function App(){ return (<ConfigProvider locale={zhCN}><BrowserRouter basename={process.env.NODE_ENV === "development" ? '' : '/bsrm-web-manage/'}><RoutesWrapper routes={baseRoutes}/></BrowserRouter></ConfigProvider>)
}
export default function App(){ return (<ConfigProvider locale={zhCN}><BrowserRouter basename={process.env.NODE_ENV === "development" ? '' : '/bsrm-web-operator/'}><RoutesWrapper routes={baseRoutes}/></BrowserRouter></ConfigProvider>)
}
export default function App(){ return (<ConfigProvider locale={zhCN}><BrowserRouter basename={process.env.NODE_ENV === "development" ? '' : '/bsrm-web-testingorganization/'}><RoutesWrapper routes={baseRoutes}/></BrowserRouter></ConfigProvider>)
}
四、Nginx配置
location /bsrm-web-manage/ {alias /var/www/dev/fe/bsrm-web-manage/dist/;try_files $uri /bsrm-web-manage/index.html:
}
location /bsrm-web-operator/ {alias /var/www/dev/fe/bsrm-web-operator/dist/;try_files $uri /bsrm-web-operator/index.html:
}
location /bsrm-web-testingorganization/ {alias /var/www/dev/fe/bsrm-web-testingoraanization/dist/;try_files $uri /bsrm-web-testingorganization/index.html:
}