first commit
This commit is contained in:
70
README-deployment.md
Normal file
70
README-deployment.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# SPA 路由部署说明
|
||||
|
||||
## 问题描述
|
||||
React Router 使用的是客户端路由,当用户直接访问 `/admin`、`/create` 等路由时,服务器会尝试查找对应的文件,但这些路径在服务器上并不存在,因此返回 404。
|
||||
|
||||
## 解决方案
|
||||
|
||||
### 1. OpenResty/Nginx 配置
|
||||
|
||||
在你的 OpenResty 配置中添加以下配置:
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name your-domain.com;
|
||||
root /path/to/your/dist;
|
||||
index index.html;
|
||||
|
||||
# 处理静态资源
|
||||
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
|
||||
expires 1y;
|
||||
add_header Cache-Control "public, immutable";
|
||||
try_files $uri =404;
|
||||
}
|
||||
|
||||
# SPA 路由回退 - 关键配置
|
||||
location / {
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 2. 关键配置说明
|
||||
|
||||
- `try_files $uri $uri/ /index.html;` 是核心配置
|
||||
- 当访问任何路由时,服务器会:
|
||||
1. 首先尝试查找对应的文件 (`$uri`)
|
||||
2. 然后尝试查找对应的目录 (`$uri/`)
|
||||
3. 最后回退到 `index.html`
|
||||
|
||||
### 3. 部署步骤
|
||||
|
||||
1. 构建项目:
|
||||
```bash
|
||||
pnpm build
|
||||
```
|
||||
|
||||
2. 将 `dist` 目录的内容上传到服务器
|
||||
|
||||
3. 配置 OpenResty/Nginx 使用上述配置
|
||||
|
||||
4. 重启服务器:
|
||||
```bash
|
||||
nginx -s reload
|
||||
# 或
|
||||
systemctl reload nginx
|
||||
```
|
||||
|
||||
### 4. 验证
|
||||
|
||||
部署后,以下访问方式都应该正常工作:
|
||||
- 直接访问 `https://your-domain.com/admin`
|
||||
- 直接访问 `https://your-domain.com/create`
|
||||
- 通过侧边栏导航访问
|
||||
|
||||
### 5. 注意事项
|
||||
|
||||
- 确保静态资源路径正确
|
||||
- 如果使用子路径部署,需要相应调整配置
|
||||
- API 路由需要单独配置代理,避免被 SPA 回退规则影响
|
||||
Reference in New Issue
Block a user