SEO 百科
Halo
本页目录
Halo
Halo 是一款开源建站系统,用 Java 开发,既能当博客用,也能当内容网站用,功能由主题和插件扩展[2]。做 SEO 的人会碰上它,因为文章网址、站点地图和图片都能在后台配置,配错了会直接影响抓取。它由国内团队维护,生态以中文开发者为主,好处是部署方式现代、插件与主题在官方应用市场统一管理,代价是第三方教程和插件数量比 WordPress 少。
技术选型
Halo 基于 Spring Boot 开发,Web 层用 Netty 与 WebFlux,数据库访问用 R2DBC[3]。官方文档称它“使用 Netty 作为 Web 服务器”,Web 层已经不依赖 Servlet。数据库可以选 H2、MySQL 和 PostgreSQL,生产环境多用 PostgreSQL。
部署方式有面板、JAR 和 Docker 三种,官方推荐生产环境用 Docker Compose[2]。这一点和多数 PHP 建站系统不同,装它的服务器不需要 PHP 运行环境,但要装得下 Docker。
与其他博客系统的差别
Halo 用 Java 编写,程序以 JAR 或容器为单位升级,插件也是 JAR 包。升级主程序不会覆盖主题文件,这一点比直接改源码的系统省心。
代价在资源占用上。Java 程序启动后常驻内存,比 PHP 系统吃资源多,便宜的虚拟主机通常跑不动,需要一台能装 Docker 的服务器。
它适合有一点服务器基础、愿意用 Docker 的站长。只想在虚拟主机上点一下安装的人,用 WordPress 或 Z-Blog 更省力。
与抓取和收录相关的设置
- 文章网址:Halo 支持自定义永久链接,可以配成
/archives/{slug}形式,halo.use-absolute-permalink决定生成绝对地址还是相对地址[4]。 - 外部访问地址:
halo.external-url要设成站点真实域名,否则初始化页面和站点地图会写成内网地址[4]。 - 站点地图:主题通常输出
/sitemap.xml,生成后提交给搜索资源平台[1]。 - 标题与描述:由站点设置与主题模板共同决定,写死模板会让全站标题重复。
- 附件与图片:附件可以挂到对象存储,缩略图功能由
halo.attachment.thumbnail.disabled开关[4]。 - 缓存:Halo 是动态程序,可以配 Nginx 或 CDN 做页面缓存,减少重复执行。
halo:
# 站点真实访问地址,站点地图和永久链接按它生成绝对地址
external-url: https://www.example.com
# 永久链接生成绝对地址还是相对地址
use-absolute-permalink: false
百度把抓取概括为“从互联网抓取网页、建立索引数据库、将索引库中数据展现给用户”,服务器响应慢会直接压低抓取量[5]。缓存就是为这一环准备的。
常见误用
一个误用是没配 halo.external-url。站点地图和永久链接会写成 localhost 或内网地址,爬虫拿到这些地址等于拿到死链。
另一个误用是主题模板把标题和描述写死。全站标题一模一样,搜索结果里分不出页面,改起来还要动主题源码。
图片不走缓存也是常见问题。附件直接由 Halo 返回,流量一大就拖慢响应,挂到对象存储再接 CDN 会好很多。
演示环境没关也会出问题。测试站对外开放又被爬虫抓到,重复内容会跟正式站争排名。
附录
参见
参考资料
官方(境外)
- 《了解站点地图》,Google 搜索中心,2025-12-18 更新。
官方(国内)
外部链接
无。