url配置为子目录时,静态资源路径生成错误
bugwaiting next release
### 问题描述
当 Hexo 的 `_config.yml` 中 url 配置包含子目录(例如 `https://xxx.github.io/blog`)时,主题生成的 CSS 和 JS 引用路径会出现重复的根目录,导致资源 404 无法加载。
### 复现步骤
只需在一个全新的 Hexo 环境中按以下步骤操作即可复现:
1. 初始化环境
```bash
hexo init blog
cd blog
npm install
cd themes
git clone https://github.com/D-Sketon/hexo-theme-reimu.git reimu
cd ..
```
2. 修改根目录 _config.yml
```yml
url: https://xxx.github.io/blog
theme: reimu
```
3. 启动服务
```bash
hexo clean
hexo s
```
4. 访问`http://localhost:4000/blog/`
<img width="2502" height="1509" alt="Image" src="https://github.com/user-attachments/assets/27f38dfb-6fff-4a62-b22d-ed7ce4cde123" />
_* 事实上,将`css(url_for(...))`修改为`css(...)`即可,或在`scripts`文件夹下放置:_
```js
hexo.extend.filter.register('after_render:html', function(str, data){
var root = hexo.config.root;
if(root && root !== '/'){
var doubleRoot = root + root.replace(/^\//, '');
str = str.split(doubleRoot).join(root);
}
return str;
});
```
_即可正常加载。_
### 你的 Hexo 和 插件版本
```text
+-- hexo-generator-archive@2.0.0
+-- hexo-generator-category@2.0.0m ls --depth 0npm ls --depth 0
+-- hexo-generator-index@4.0.0
+-- hexo-generator-tag@2.0.0og>
+-- hexo-renderer-ejs@2.0.0
+-- hexo-renderer-marked@7.0.1>npm ls --depth 0
+-- hexo-renderer-stylus@3.0.1
+-- hexo-server@3.0.0
+-- hexo-theme-landscape@1.1.0
`-- hexo@8.1.1
```
关闭于 2025-11-29 1 条评论