blogdown 中的 baseUrls、重定向和重写
baseUrls, redirects and rewrites in blogdown
你好 blogdown Whosebug 社区!
我最近一直在将我的个人 GitHub/Jekyll 博客 (https://blogs.nopcode.org/brainstorm) 迁移到 Blogdown/Netlify,但我对 _redirects
和 config.toml
url路由业务。
我已经详细阅读了官方博客down和netlify documentations。
上的推荐
不幸的是,无论我尝试多少合理的更改(主要是 config.toml
和 _redirects
),我都无法从 Jekyll 成功迁移,因为:
- 访问 https://blogs.nopcode.org/brainstorm 会导致所有博文 link 呈现为
https://blogs.nopcode.org/brainstorm/brainstorm/2017-09-01-blogpost-etc
(URL 中有两个 brainstorm
而不是一个)。我希望我所有的博文都达到 link 到 https://blogs.nopcode.org/brainstorm/2017-09-01-blogpost-etc
(只是一次头脑风暴)。现在我正在做一个 URL 重写,这样当用户点击其中一个 brainstorm/brainstorm
links 时,它会被重写为简单的 brainstorm
... 显然不是最理想的.
- 我必须将部分主题 (js/images/css/etc..) 移动到
static/brainstorm/
下,以便加载主题资产并找到那些 URLs.
这是我博客的回购协议,如果你发现其中有明显的缺陷:
https://github.com/brainstorm/brainblog
还有一连串的更改,我尝试在没有太多扭曲的情况下追求可接受的配置:
https://github.com/brainstorm/brainblog/commits/master
综上所述,我发现 Hugo/blogdown 超级快,RStudio 插件 menu/interface 超级方便,可以快速更改博文:)
在此先致谢!
这里的问题是因为 brainstorm
上的帖子有一个相对路径,并且您将基础 url 设置为 https://blogs.nopcode.org/brainstorm
Hugo 将根据主题配置构建您到 baseURL
的相对路径,Netlify 将发布相对于站点根目录的 public 目录。
Hugo 服务器在 brainstorm/brainstorm
本地向您显示正确的链接,因为它根据 baseURL 配置路径。
Netlify 路径来自已发布站点的根目录,并且不知道 Hugo 配置。在 Netlify 上,帖子的路径位于 /brainstorm
.
可能的解决方案
为您网站的主页创建一个布局,以创建列表,就像主题为一个部分所做的那样。
将所有帖子放入内容根目录并删除 brainstorm
文件夹
- 在
netlify.toml
中使用 hugo -d public/brainstorm
将 Hugo 构建到 public/brainstorm
在 content
文件夹的根目录下创建 _index.md
文件,其中包含您要在页面上使用的任何前文数据(如果有)。
在项目存储库的根目录下创建一个 layouts/index.html
文件。
{{ partial "header.html" . }}
<main class="content" role="main">
<div class="archive">
{{ range .Data.Pages.GroupByDate "2006" }}
<h2 class="archive-title">{{ .Key }}</h2>
{{ range .Pages }}
<article class="archive-item">
<a href="{{ .RelPermalink }}" class="archive-item-link">{{ .Title }}</a>
<span class="archive-item-date">
{{ .Date.Format "2006/01/02" }}
</span>
</article>
{{ end }}
{{ end }}
</div>
</main>
{{ partial "footer.html" . }}
你好 blogdown Whosebug 社区!
我最近一直在将我的个人 GitHub/Jekyll 博客 (https://blogs.nopcode.org/brainstorm) 迁移到 Blogdown/Netlify,但我对 _redirects
和 config.toml
url路由业务。
我已经详细阅读了官方博客down和netlify documentations。
上的推荐不幸的是,无论我尝试多少合理的更改(主要是 config.toml
和 _redirects
),我都无法从 Jekyll 成功迁移,因为:
- 访问 https://blogs.nopcode.org/brainstorm 会导致所有博文 link 呈现为
https://blogs.nopcode.org/brainstorm/brainstorm/2017-09-01-blogpost-etc
(URL 中有两个brainstorm
而不是一个)。我希望我所有的博文都达到 link 到https://blogs.nopcode.org/brainstorm/2017-09-01-blogpost-etc
(只是一次头脑风暴)。现在我正在做一个 URL 重写,这样当用户点击其中一个brainstorm/brainstorm
links 时,它会被重写为简单的brainstorm
... 显然不是最理想的. - 我必须将部分主题 (js/images/css/etc..) 移动到
static/brainstorm/
下,以便加载主题资产并找到那些 URLs.
这是我博客的回购协议,如果你发现其中有明显的缺陷:
https://github.com/brainstorm/brainblog
还有一连串的更改,我尝试在没有太多扭曲的情况下追求可接受的配置:
https://github.com/brainstorm/brainblog/commits/master
综上所述,我发现 Hugo/blogdown 超级快,RStudio 插件 menu/interface 超级方便,可以快速更改博文:)
在此先致谢!
这里的问题是因为 brainstorm
上的帖子有一个相对路径,并且您将基础 url 设置为 https://blogs.nopcode.org/brainstorm
Hugo 将根据主题配置构建您到 baseURL
的相对路径,Netlify 将发布相对于站点根目录的 public 目录。
Hugo 服务器在 brainstorm/brainstorm
本地向您显示正确的链接,因为它根据 baseURL 配置路径。
Netlify 路径来自已发布站点的根目录,并且不知道 Hugo 配置。在 Netlify 上,帖子的路径位于 /brainstorm
.
可能的解决方案
为您网站的主页创建一个布局,以创建列表,就像主题为一个部分所做的那样。
将所有帖子放入内容根目录并删除
brainstorm
文件夹- 在
netlify.toml
中使用
hugo -d public/brainstorm
将 Hugo 构建到 public/brainstorm
在 content
文件夹的根目录下创建 _index.md
文件,其中包含您要在页面上使用的任何前文数据(如果有)。
在项目存储库的根目录下创建一个 layouts/index.html
文件。
{{ partial "header.html" . }}
<main class="content" role="main">
<div class="archive">
{{ range .Data.Pages.GroupByDate "2006" }}
<h2 class="archive-title">{{ .Key }}</h2>
{{ range .Pages }}
<article class="archive-item">
<a href="{{ .RelPermalink }}" class="archive-item-link">{{ .Title }}</a>
<span class="archive-item-date">
{{ .Date.Format "2006/01/02" }}
</span>
</article>
{{ end }}
{{ end }}
</div>
</main>
{{ partial "footer.html" . }}