本地镜像打不开样式?kage serve让根路径资源在离线环境下完整还原的完整指南

发布时间:2026/9/26 17:20:11
本地镜像打不开样式?kage serve让根路径资源在离线环境下完整还原的完整指南 本地镜像打不开样式kage serve让根路径资源在离线环境下完整还原的完整指南【免费下载链接】kageShadow any website for offline viewing, with the JavaScript stripped out项目地址: https://gitcode.com/gh_mirrors/kage6/kage用浏览器另存为保存的网页过段时间再打开往往就是一锅乱码样式丢了、图片裂了、脚本还在偷偷请求外网。而 kage 是一个网站离线镜像工具——它用无头 Chrome 渲染整站、剥掉全部 JavaScript把 CSS、图片、字体全部下载到本地。但克隆完成后直接双击打开 HTML样式可能依然失效没错这正是kage serve要解决的问题为根路径资源提供本地 HTTP 服务让离线镜像完整还原线上样式。为什么直接打开 HTML样式会打不开这是新手最常踩的坑。克隆出的镜像就是一个普通文件夹很多站点可以直接双击index.html离线浏览。但有些页面的资源链接是根相对路径比如link href/style.css relstylesheet img src/img/logo.png以file://协议直接打开文件时浏览器会把/style.css解析到磁盘根目录而不是你镜像文件夹的根目录——于是 404页面裸奔。kage 在克隆时会把这类资源改写到_kage/保留目录下的本地相对路径样式表内部的url(...)和import也会一并重写见 asset/css.go 中的RewriteCSS。但根路径页面对应的页面位置必须通过HTTP 根来访问才能真正还原。kage serve就是为此而生。一条命令启动本地预览服务在镜像目录下运行命令定义见 cli/serve.gokage serve $HOME/data/kage/example.com终端会立刻给出可访问地址kage serve $HOME/data/kage/example.com open http://127.0.0.1:8800 press Ctrl-C to stop打开http://127.0.0.1:8800所有被 kage 重写的链接都能逐页点通每个资源都命中本地副本全程零网络请求。按需切换端口与监听地址默认监听127.0.0.1:8800用--addr参数即可自由调整# 换一个端口 kage serve $HOME/data/kage/example.com --addr 127.0.0.1:9000 # 局域网内其他机器也能访问请谨慎使用 kage serve $HOME/data/kage/example.com --addr 0.0.0.0:8800还有一个贴心设计不带参数时kage serve会直接服务当前目录方便你cd进输出文件夹后一键预览cd $HOME/data/kage/example.com kage serve理解镜像目录结构才能看懂资源如何还原kage 落盘的布局是确定性映射的URL → 本地文件路径一一对应核心实现见 urlx/ 与 asset/download.go。以example.com为例$HOME/data/kage/example.com/ ├── index.html # 首页/脚本已剥离 ├── about/index.html # /about 页面 └── _kage/ # 保留目录 ├── example.com/ │ ├── site.css # 本地化样式表url() 已重写 │ ├── logo.png │ └── fonts/body.woff2 └── state.json # 爬虫状态用于断点续爬页面变成目录/about写成about/index.html这样被服务的/about链接能命中真实文件资源按来源主机归组跨域 CDN 资源存放在_kage/主机名/下路径与线上一致查询串折叠进文件名style.css?v3会带短哈希后缀存储避免版本互相覆盖。完整目录说明见官方文档 docs/content/reference/configuration.md。镜像打包后样式照样完整还原镜像文件夹很好浏览却不好搬运。kage pack可以把整站压进单个 ZIM 文件kage open再把它以同样的方式服务回来kage pack example.com # - example.com.zim kage open example.com.zim # 离线读取ZIM 服务的根路径同样做了处理/会重定向到主页的规范路径保证页面里相对资源 URL 的解析基准正确实现细节见 pack/serve.go。打包成自包含二进制后甚至可以用原生窗口打开镜像观感接近真正的桌面应用相关打包命令的参数一览见 docs/content/reference/cli.md。常见问题速查 ️Q1端口 8800 被占用了换一个端口即可kage serve dir --addr 127.0.0.1:9000。Q2离线镜像还能请求外网吗不能。kage 克隆时会剥离所有script、内联事件和javascript:URL处理逻辑见 sanitize/资源也全部本地化打开镜像不产生任何网络调用。Q3克隆中断了怎么办kage 在按下 Ctrl-C 时会保存进度_kage/state.json重新运行同一命令即可从断点继续无需从头来过。Q4想分享给别人直接给文件夹比较笨重建议kage pack打包成单个 ZIM 文件发送对方无需安装 kage用 Kiwix 生态的任意 ZIM 阅读器也能打开。小结样式打不开的根因是根相对路径在file://协议下解析到了磁盘根目录kage serve 镜像目录一条命令提供本地 HTTP 根离线完整还原线上样式--addr切换端口0.0.0.0开放局域网访问kage packkage open让单文件镜像也能享受同样的完整还原体验。官方文档站点还收录了更多进阶指南范围限定、断点续爬等见 docs/content/配合 快速上手 与 镜像服务指南 可以快速上手整套离线镜像工作流。【免费下载链接】kageShadow any website for offline viewing, with the JavaScript stripped out项目地址: https://gitcode.com/gh_mirrors/kage6/kage创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考