文章内部引用问题
问题描述
在文章中引用博客内部的文章,不能直接使用markdown语法的 [描述](文章地址)引用链接,因为Hexo 是一个静态站点生成器,文章 .md 文件会被渲染成 HTML。
浏览器访问的 URL 是基于 permalink 配置生成的路径格式(/:year/:month/:day/:title/),而不是 .md 文件路径。
当点击错误引用链接时,服务器会尝试查找 public/title.md 这个文件,但实际存在的是 public/year/month/day/title/index.html,所以会返回 Cannot GET。
解决方法
Hexo 内置了 post_link 标签插件,可以根据文章标题或 slug 自动生成正确的永久链接。
使用方法:在你的 Markdown 文章中,使用以下格式:
1 | {% post_link title %} 相当于 [](./title) |
或者指定显示文本:
1 | {% post_link title 点击这里查看 %} 相当于 [点击这里查看](./title) |
效果:
插件会根据你 _config.yml 中的 permalink 配置(:year/:month/:day/:title/)自动生成正确的 URL 路径 /year/month/day/title/,而不是直接链接到 .md 文件。
优点:
- 如果你修改了 permalink 格式,链接会自动更新
- 不依赖具体的文件路径
- 部署到不同环境(GitHub Pages、Vercel 等)都能正常工作