Halo CMS自定义路由,修改页面访问URL
Halo CMS 默认的文章访问地址通常包含 /archives/ 加一串随机字符,既不美观也不利于记忆。
通过自定义路由功能,你可以把页面 URL 改成 /文章标题 或 /分类/标题 这种更清晰的形式。
这篇教程按零基础用户的操作习惯,从后台设置到验证效果逐步说明。
动手前先确认两件事
自定义路由不是孤立功能,它依赖 Halo 的固定链接策略和主题模板支持。
开始前请检查:
- Halo 版本:2.x 版本在后台“设置 → 基本设置”中直接提供固定链接选项;1.x 版本需要修改配置文件,操作差异较大。建议先登录后台查看当前版本号。
- 主题兼容性:部分第三方主题硬编码了文章链接格式,修改路由后可能出现模板报错。可在“外观 → 主题”中临时切换为默认主题测试。
另外,修改固定链接后旧链接会失效,如果站点已有搜索引擎收录,建议提前规划重定向规则。
后台修改固定链接格式
这是最直接的方式,适合大多数使用 Halo 2.x 的用户。
- 登录 Halo 后台,左侧菜单点击 设置,再选择 基本设置。
- 找到 固定链接 或 Permalink 区域,你会看到类似
/{slug}或/archives/{slug}的格式字段。 - 将字段修改为你想要的格式。常用写法:
- 简洁型:
/{slug} - 带分类:
/{categories}/{slug} - 带日期:
/{year}/{month}/{slug}
- 点击页面底部的 保存 按钮。
保存后,新发布文章的链接会立即按新格式生成。
已有文章需要进入每篇文章的编辑页,手动点击“更新”按钮,让系统重新生成链接。
通过配置文件自定义路由
如果后台没有提供你需要的路由格式,或者你使用的是 Halo 1.x,可以修改配置文件。
找到 Halo 的工作目录,通常位于 /www/wwwroot/halo 或 ~/.halo。
用编辑器打开 application.yaml:
halo:
workDir: ~/.halo
在配置文件中添加或修改路由相关段落。
以 Halo 2.x 为例,可加入:
halo:
permalink:
pattern: /{slug}
保存后重启 Halo 服务:
docker restart halo
如果是二进制部署,使用 systemctl restart halo 或 supervisorctl restart halo。
重启后访问一篇文章,检查地址栏是否已按新规则显示。
修改后出现404怎么办
修改路由后最常见的问题是打开文章提示 404 或跳回首页。
可以按下面顺序排查:
- 检查反向代理配置:如果你用 Nginx 或宝塔面板做代理,需要确保伪静态规则放行了新路径。宝塔用户可在“网站 → 设置 → 伪静态”中填入 Halo 官方提供的规则。
- 清除浏览器和服务器缓存:部分缓存插件或 CDN 会保留旧链接。先在无痕窗口测试,再清理 CDN 缓存。
- 确认文章别名是否重复:自定义路由使用文章别名生成链接,如果两篇文章别名相同,系统会生成冲突地址。进入文章编辑页,在“高级设置”中检查并修改别名。
判断标准:如果首页能打开、只有文章页 404,问题多半出在伪静态或别名冲突;
如果全站都打不开,检查 Halo 服务是否正常启动。
验证自定义路由是否生效
完成设置后,建议按以下步骤确认结果:
- 打开一篇已发布的文章,查看浏览器地址栏,确认链接格式与设置一致。
- 复制链接到微信或记事本,检查是否包含多余的参数或乱码。
- 用手机浏览器访问同一链接,确认移动端也能正常打开。
- 如果站点已提交搜索引擎,可在搜索资源平台使用“链接提交”工具重新提交新链接。
关键结论:Halo CMS 自定义路由生效的前提是文章别名唯一、伪静态规则正确、主题模板不硬编码旧链接。
三者缺一,都可能出现 404。
这些操作容易踩坑
- 修改固定链接后,不要立即删除旧链接对应的文章,否则搜索引擎抓取时会直接丢失页面。
- 如果站点开启了评论或点赞功能,部分第三方插件可能依赖旧路由,升级前先备份数据库。
- 使用 Docker 部署时,配置文件挂载路径要确认清楚,改错位置重启后不会生效。
常见疑问
问:修改路由后,之前的文章链接还能访问吗?
默认不能。
旧链接会返回 404,需要在 Nginx 中配置 301 重定向,或在 Halo 后台安装重定向插件处理。
问:自定义路由会影响 SEO 吗?
合理的短链接通常对 SEO 有正面作用,但修改后需要重新提交站点地图,并保持链接稳定,频繁改动反而不利。
问:文章别名可以用中文吗?
可以,但中文别名在部分浏览器或分享场景下会被转义成较长的编码。
如果希望链接简洁,建议使用英文或拼音。
如果你正在处理 Halo CMS 自定义路由和页面访问 URL 的修改,建议先在测试环境操作一遍,确认无误后再应用到正式站点。
遇到异常时,优先检查伪静态规则和文章别名这两处。