您正在阅读的这个站点,从 Next.js 迁到 Rust,没丢一个 URL
envixo.com 以 99 种语言发布。我们把它从 Next.js 重写为 Rust,在切换前逐一比对了每个 URL 与旧站点,并修好了旧站点在搜索引擎、从右到左语言和 AI 助手方面做错的地方。
- 客户
- Envixo
- 平台
- Web 端
- 行业
- 营销网站
- 上线
- 2026
挑战
原来的 Next.js 站点能用,但需要一台预留 512 MB 内存的 Node.js 服务器,每个页面要传输约 150 KB 的 HTML,而且仍有缺口:没有从右到左的版式,结构化数据也只靠 JavaScript 添加。
我们构建了什么
一个使用 axum 和 Askama 的 Rust 服务器,提供相同的 URL、相同的 99 个语言文件和相同的设计,由 Tailwind CSS 与原生 JavaScript 构建。
相同的 URL 与重定向
语言识别、语言前缀、结尾斜杠和语言 cookie 的行为都与旧站点一致,因此没有丢失任何链接或排名。
先对齐 SEO,再做得更好
元数据、hreflang、JSON-LD 和站点地图与旧站点一致,并修正了社交分享标签,还新增了 llms.txt。
零差异才放行
一个工具逐一比对了新旧站点的每个 URL。切换的前提是零差异,另外还要通过英语、阿拉伯语和日语在三种宽度下的截图。
3D 探索
一个贯穿整个落地页的 three.js 导览,在无法使用 3D 时提供纯文本列表。
不用 SDK 的联系表单
用 Cloudflare Turnstile 拦截垃圾信息,通过 Amazon SES 发送邮件,请求由我们手工签名,另有蜜罐字段和按访客计数的限额。
错误有上报,密钥有保障
服务器和浏览器的错误都上报到 Honeybadger,API 密钥绝不会出现在页面上。
工程成果
内存于 2026 年 10 月在生产环境中测得;镜像大小来自构建产物。站点地图的 URL 数量由自动化测试核对。
- 通过 DNS 回滚,旧站点保留七天
- 测试和镜像构建通过后,依赖更新自动合并
- 测试与构建都在 Envixo 自有的 CI 运行器上执行
- 以 99 种语言发布,使用与此前相同的语言文件
技术
- Rust
- axum
- Askama
- Tailwind CSS
- three.js
- Amazon SES
- Cloudflare Turnstile
- Kubernetes