解决Hugo的错误链接localhost

问题

在使用hugo server这种方式建立网站,可能会出现错误的绝对URL。 生成静态网站不当,也可能有相同问题。

这时,只有首页能访问,并且样式消失,所有链接失效。

错误示例

<ul class="sidebar-nav">
    <li><a href="http://localhost:1313/">封面</a> </li>
    <li><a href="http://localhost:1313/about/"> 缘 </a></li>
</ul>

用relativeurls解决

利用hugo config | grep -i url,可以找到一个叫relativeurls的参数,默认为false

canonifyurls = false
relativeurls = false
uglyurls = false

config.toml中,打开这个参数,可以使用相对URL。

relativeurls = true

效果如下:

<ul class="sidebar-nav">
    <li><a href="./">封面</a> </li>
    <li><a href="./about/"> 缘 </a></li>
</ul>

然而,这还是解决不了很多直接设为绝对URL的问题。

用baseURL解决

config.toml中,添加baseURL字段,可以解决静态生成的问题。 但是,却不能解决动态服务hugo server的问题。

hugo server时,添加参数--baseURL,可以把绝对URL设为预期值。

这也许是一个bug,但更有可能是设计如此。 因为,hugo server通常是用来调试的。

Hugo provides its own webserver which builds and serves the site. While hugo server is high performance, it is a webserver with limited options. Many run it in production, but the standard behavior is for people to use it in development and use a more full featured server such as Nginx or Caddy.

‘hugo server’ will avoid writing the rendered and served content to disk, preferring to store it in memory.

孤用Nginx来反向代理hugo server的1313端口,也许一开始就是一个错误。

参考


相关笔记