Skip to content

fix: 消除硬编码的站点绝对 URL,site.url 改为 HTTPS - #98

Open
h1s97x wants to merge 2 commits into
hibikilogy:masterfrom
h1s97x:fix/hardcoded-absolute-urls
Open

h1s97x wants to merge 2 commits into
hibikilogy:masterfrom
h1s97x:fix/hardcoded-absolute-urls

Conversation

@h1s97x

@h1s97x h1s97x commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

变更内容

消除写死域名的站点绝对 URL,并把 site.url 改为 HTTPS。

1. _config.yml

  • url: http://hibikilogy.github.io → https://hibikilogy.github.io

2. 文章正文(_posts/**/*.md,440 处 / 40 个文件)

  • https://hibikilogy.github.io → {{ site.url }}{{ site.baseurl }}
  • 覆盖图片(425 处)与站内其它链接(15 处),例如:
    ![](https://hibikilogy.github.io/images/x.webp) → ![]({{ site.url }}{{ site.baseurl }}/images/x.webp)

3. front matter 字段(14 处)

  • header-img: https://hibikilogy.github.io/images/... → header-img: /images/...
  • ⚠️ 实测 Jekyll 不渲染 front matter 中的 Liquid(header-img: "{{ site.url }}..." 会原样输出、图片失效),
    因此 front matter 只能用根相对路径。

4. .github/workflows/path2url.yml

  • 替换目标不再是写死域名,并按位置区分:
    • front matter(首个 --- 到第二个 ---)→ /images/
    • 正文 → {{ site.url }}{{ site.baseurl }}/images/
  • 同步更新文件头注释。

5. _includes/nav.html

  • 搜索范围 site:hibikilogy.github.io → site:{{ site.url | replace: 'https://', '' | replace: 'http://', '' }}{{ site.baseurl }}

验证

  • jekyll build 通过,生产模式输出:
    • 正文图片 → https://hibikilogy.github.io/images/...
    • header-img → /images/...
    • canonical / feed.xml → https://hibikilogy.github.io/...
    • 导航搜索 → site:hibikilogy.github.io
  • 保留文件原有换行符(其中 2 个文件为 CRLF),未产生整文件 diff:本次共 444 行改动,等于命中的 URL 行数。
  • 未改动 cdn.jsdelivr.net / raw.githubusercontent.com 等第三方托管地址。

备注

  • 评审提到 _layouts/post.html 存在硬编码,实际该文件并无硬编码;真正来源是 .github/workflows/path2url.yml 的 sed 替换(见关联 issue)。

Fixes #97

@pzhlkj6612 pzhlkj6612 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

指向站内资源的链接或许可以直接使用 {{ site.baseurl }} 而不是 {{ site.url }}{{ site.baseurl }}, 这样短一些。

@h1s97x

h1s97x commented Sep 13, 2026 •

Copy link
Copy Markdown
Contributor Author

指向站内资源的链接或许可以直接使用 {{ site.baseurl }} 而不是 {{ site.url }}{{ site.baseurl }}, 这样短一些。

感谢建议。我核对了一下,站内渲染两种写法完全等价。 本站 baseurl 为空、且站点在域名根目录,{{ site.baseurl }}/images/x.jpg 会渲染成 /images/x.jpg,页面效果与 {{ site.url }}{{ site.baseurl }}/images/x.jpg 一致。

但是可能存在的风险:RSS。 feed.xml 是把 post.content 直接输出到 <description> 的全文订阅,图片地址会原样发出去。RSS 规范没有为相对地址定义基准,能否解析取决于阅读器:主流阅读器一般会按 item 的 link 补全,但部分聚合器和邮件订阅不会补。

- _config.yml: url 由 http://hibikilogy.github.io 改为 https://hibikilogy.github.io
- 文章正文中的自站绝对 URL(439 处 / 31 个文件)统一改为 {{ site.url }}{{ site.baseurl }}
- header-img 等 front matter 字段(14 处)改用根相对路径 /images/:
  实测 Jekyll 不渲染 front matter 中的 Liquid,用变量会原样输出导致图片失效
- .github/workflows/path2url.yml: 替换目标不再是写死域名
  (正文 → {{ site.url }}{{ site.baseurl }}/images/,front matter → /images/)
- _includes/nav.html: 搜索范围 site:xxx 由 site.url 推导,不再写死域名
- _posts/**/*.md: 440 处 {{ site.url }}{{ site.baseurl }} 改为 {{ site.baseurl }}(图片 425 处 + 站内文章互链 15 处)

- .github/workflows/path2url.yml: sed 替换目标与文件头注释同步更新,避免自动化再次写回硬编码域名

- front matter 的 header-img、canonical、feed.xml、disqus_url、导航 site: 搜索保持绝对地址不变
@h1s97x
h1s97x force-pushed the fix/hardcoded-absolute-urls branch from 254d1ab to 9e21aab Compare September 13, 2026 03:32

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

修复硬编码的站点绝对 URL:site.url 为 HTTP 且文章内写死域名(454 处 / 40 文件)

2 participants