rmdir.cn

SPA 路由回退配置示例

为客户端路由应用配置首页回退

配置骨架(非 Shell 命令)

location / {
    try_files $uri $uri/ /index.html;
}

说明

适用于使用 History API 的纯客户端单页应用,刷新子路由时由 index.html 接管。放入 http 上下文中 include 的站点文件(如 /etc/nginx/conf.d/spa.conf),root 指向前端构建目录。本示例不适用于所有预渲染静态站点或需要真实服务端 404 的页面。修改后先检查通过再重载。

示例

SPA 首页回退

完整 server 块,确保首页真实存在。

server {
    listen 80;
    server_name example.com;
    root /srv/www/spa;
    index index.html;
    location / {
        try_files $uri $uri/ /index.html;
    }
    location = /index.html {
        try_files $uri =404;
    }
}

注意事项:浏览器中未知应用路由可能仍返回 HTTP 200,需要应用自行展示未找到页面。

静态资源不走首页回退

在上述 server 内增加 assets 块,避免缺失脚本返回 HTML。

location ^~ /assets/ {
    try_files $uri =404;
}

注意事项:资源前缀需要与构建工具一致;API 路径也应单独配置反向代理,不能被首页回退吞掉。

参考资料