news 2026/9/10 12:58:51

如何用 .puter_site_config 为 Puter 托管的 SPA 配置 /index.html 回退让深链生效?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何用 .puter_site_config 为 Puter 托管的 SPA 配置 /index.html 回退让深链生效?

如何用 .puter_site_config 为 Puter 托管的 SPA 配置 /index.html 回退让深链生效?

【免费下载链接】puter🌐 The Internet Computer! Free, Open-Source, and Self-Hostable.项目地址: https://gitcode.com/GitHub_Trending/pu/puter

如果你的单页应用(SPA)直接托管在 Puter 上,客户端路由(React Router、Vue Router 或类似方案)会遇到一个典型问题:访客直接加载/dashboard时,服务器是在找一个叫/dashboard的文件,而这个文件并不存在,于是请求拿不到你的index.html,路由无从接管。Puter 的解决办法是一个可选的站点配置文件.puter_site_config:把它放在站点根目录,让“请求不匹配任何文件”这种情况改为返回index.html并带上正常的200状态码。完成配置后,深链、页面刷新和分享 URL 都能正常工作。本文基于 Site Configuration 文档给出完整的放置、配置与验证过程。

前提:站点已发布到 Puter

.puter_site_config只对已发布的站点生效,先确保你的网站已经在 Puter 上跑起来。文档提供的发布方式有:

  • 在 puter.com 上右键创建文件夹、上传文件后选择Publish as Website
  • 用 Puter CLI:npm install -g @heyputer/cli后执行puter site deploy [dir] [subdomain](CLI 目前处于 beta 0.x,命令和行为可能变化);
  • 用 GitHub Actions 的 Puter Subdomain Deploy Action 自动部署。

具体操作见 Deployments。如果你是通过代码管理站点,参见 Hosting API。

没有.puter_site_config文件时,请求一个不存在的路径会得到 Puter 默认的 404 页面——这正是要改变的默认行为。

把 .puter_site_config 放在站点根目录

文件位置只有一个要求:放在你发布的目录的顶层,和index.html平级。例如你发布的是~/Desktop/my-site,文件就应该放在~/Desktop/my-site/.puter_site_config

两点需要知道:

  • 该文件不会下发给访客。请求/.puter_site_config会像其他不存在的路径一样返回 404;
  • 它是可选的,不创建该文件,站点行为与现在完全一致。

写入 SPA 回退配置

对 SPA 场景,配置内容是:当404发生时,返回/index.html这个页面,并且状态码改为200

{ "errors": { "404": { "file": "/index.html", "status": 200 } } }

这里status是关键:errors.<code>.status是可选项,默认值就是正在处理的那个状态码——也就是说404规则如果不写status,响应就是404。只有显式写成200,浏览器拿到的是成功响应,前端路由才会接管页面。

字段参考(以文档为准):

字段类型必填说明
errorsobject把 HTTP 状态码映射到对应的回退页面,是唯一的顶层键
errors.<code>object要处理的状态码,作为字符串键,必须在400599之间;目前只有404真正生效
errors.<code>.filestring要返回的页面路径,以/开头,相对于站点根目录
errors.<code>.statusnumber响应返回的状态码,200599;默认与处理的码相同,SPA 回退需设为200

参考写法里出现的errors.<code>通用键(如403500)会被接受和校验,但文档明确说明:404外的码当前还不用于返回页面,写了也不报错,但不能依赖它们,等官方支持落地后才会生效。

可选分支——如果你只想要一个自定义 404 页面而不是 SPA 回退,同样的结构、把file指向404.html不写status即可,响应保留真正的404状态:

{ "errors": { "404": { "file": "/404.html" } } }

两者是同一个机制的两种用法:SPA 回退要的是“假 404 + 真 200”,自定义 404 页要的是“假页面 + 真 404”。

部署后如何验证

把配置随构建产物一起重新部署(在 puter.com 上就是重新上传该文件;CLI 或 Actions 则重新执行一次部署)。验证时注意文档给出的两个特性:

  1. 改动最多要等一分钟。站点配置有 60 秒缓存,刚上传完就测出“没生效”之前,先等一分钟再下结论。
  2. 配置写错是被静默忽略,而不是报错。JSON 语法错误、文件超过 64 KB、或结构不符合上面的形状,Puter 都会当作文件不存在来处理——站点不会挂,但你的改动也悄无声息地不生效。所以文档的要求是:检查行为是否真的变了,而不是假设它变了。

具体的检查方式:

  • 直接在浏览器地址栏请求一个只存在于前端路由的路径(例如https://你的子域名.puter.site/dashboard),应返回index.html的内容且状态码为200,前端路由接管后正常渲染页面;
  • 确认该请求在配置前是 Puter 默认 404、配置后是index.html+200,这个“行为确实变了”的对比才是判定标准;
  • 顺手请求/.puter_site_config应得到 404,可用来确认配置文件本身不会暴露给访客。

已知边界与不支持项

  • file指向的页面不存在时:访客会拿到 Puter 默认 404,文档确认不存在重定向循环;
  • 路径不能逃逸站点file在你的站点根目录内解析,..段会被剥掉,配置无法指向你没发布的东西;
  • 不支持的能力.puter_site_config不做重定向、URL 重写、自定义响应头、clean URLs、cache-control 规则或目录列表。如果你正从_redirectsvercel.json迁移过来,只有错误页面这一部分有对应能力;
  • 有两个改写始终发生、无需配置:请求/或任何目录路径时,直接返回该目录的index.html

如果你的 SPA 只需要/index.html兜底,以上机制已经足够;需要重定向或改写的逻辑要放到前端路由层解决。

下一步

发布流程的细节(puter.com 操作、CLI 参数、GitHub Actions workflow 完整配置)见 Deployments;需要以编程方式创建和管理站点(例如网站构建器、静态站点生成器)时,使用 Hosting API。字段与行为变更以 Site Configuration 为准。

【免费下载链接】puter🌐 The Internet Computer! Free, Open-Source, and Self-Hostable.项目地址: https://gitcode.com/GitHub_Trending/pu/puter

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 12:57:09

朗伯模型与可见光通信:从公式到Python仿真实战

1. 从一盏灯的"发光性格"说起&#xff1a;朗伯模型到底在描述什么做可见光通信&#xff08;VLC&#xff09;的人&#xff0c;大概率都绕不开朗伯模型。不管是刚接触课题的学生&#xff0c;还是已经在做实验的工程师&#xff0c;第一个要面对的问题往往是&#xff1a;…

作者头像 李华
网站建设 2026/9/10 12:55:17

CANN/ge ACL设置数据集张量描述

aclmdlSetDatasetTensorDesc 【免费下载链接】ge GE&#xff08;Graph Engine&#xff09;是面向昇腾的图编译器和执行器&#xff0c;提供了计算图优化、多流并行、内存复用和模型下沉等技术手段&#xff0c;加速模型执行效率&#xff0c;减少模型内存占用。 GE 提供对 PyTorch…

作者头像 李华
网站建设 2026/9/10 12:55:10

Baklib知识管理平台在IT团队中的实践与价值

1. Baklib在软件与信息技术行业的应用价值Baklib作为新一代知识管理平台&#xff0c;正在深刻改变软件与信息技术行业的知识协作方式。这个基于AI的知识库解决方案&#xff0c;完美契合了技术团队在文档管理、知识沉淀和协作效率方面的核心需求。我亲历过多个技术团队从传统Wik…

作者头像 李华
网站建设 2026/9/10 12:53:05

Lidar避障强化学习系统:SAC-Auto算法与PyTorch轻量实现

简介&#xff1a;本资源是一套基于PyTorch实现的SAC-Auto强化学习算法激光雷达小车避障仿真系统&#xff0c;面向计算机、自动化、人工智能等专业的本科生与研究生&#xff0c;适用于课程设计、毕业设计及竞赛项目开发。项目完整复现了Lidar环境感知、动态/静态障碍物规避、策略…

作者头像 李华