路径别名方案通过nginx location映射和前端base配置,实现单域名下多前端项目隔离部署:/admin/、/mobile/、/pc/分别指向独立构建目录,并需统一处理资源路径、路由回退与api前缀。

用别名解决多项目同域名问题,核心是让不同路径指向不同前端项目,而非多个域名共用同一套代码。这不是DNS或邮箱别名,而是Web服务器和前端构建协同配合的路径级路由方案。
明确别名在这里指“路径别名”,不是域名别名
在单域名下托管多个前端项目(比如后台系统、移动端页、PC端页),关键不是给域名起小名,而是把 /admin、/mobile、/pc 这类路径当作“别名”,映射到各自独立的打包目录。服务器根据请求路径分发静态资源,各项目互不干扰。
Nginx 配置路径别名映射
在站点配置中,用 location 块为每个子路径指定真实文件位置:
-
确保主域名只绑定一次,例如
server_name example.com; -
为每个项目设置独立 location:
location /admin/ { alias /www/wwwroot/example.com/admin/; }location /mobile/ { alias /www/wwwroot/example.com/mobile/; }location /pc/ { alias /www/wwwroot/example.com/pc/; } - 注意末尾斜杠匹配逻辑:alias 路径末尾带 /,则 location 的 /admin/ 会完整替换为目标目录;若用 root,则需手动拼接路径
-
添加 index 支持:每个 location 内加
index index.html;,确保访问 /admin/ 自动读取对应目录下的入口页
前端构建时配置 base 路径
项目打包必须适配部署路径,否则资源加载 404:
- Vite 项目在
vite.config.js中设base: '/admin/'(含结尾斜杠) - Vue CLI 项目在
vue.config.js中设publicPath: '/mobile/' - React(CRA)需改
homepage字段为"https://example.com/pc",并重新 build - 所有静态资源(JS/CSS/图片)、路由前缀、API 请求基础路径都要受此 base 控制
避免常见坑点
路径别名看似简单,但几个细节不处理就会白忙活:
-
HTML 中的相对路径失效:不要写
<img src="logo.png">,要写<img src="/admin/logo.png">或用 public 目录 + 环境变量注入 base -
History 模式路由需服务端支持:Vue Router 或 React Router 的 history 模式下,/admin/user 页面刷新会 404,需在对应 location 块内加
try_files $uri $uri/ /admin/index.html; -
跨域问题自然消失:因所有项目都走 example.com 下不同路径,后端接口可统一设为
/api/xxx,无需额外跨域配置 - 别名路径不能重叠:/admin 和 /admin-user 会冲突,建议统一加尾部斜杠并保持层级清晰










