hugo博客去除sitemap中的tags

默认情况下hugo以及我用的stack主题已经做到开箱即用了,同时hugo也支持各种自定义配置,我也是遇到了需求才去学习如何修过hugo配置的。

我遇到的问题是,我发现构建后的sitemap会包括所有的tags标签,以及部分着陆页,比如/tags/、/post/、/categories/等,由于我写起来文章标签定的很随意,所以我想去掉这些标签,避免被搜索引擎收录。至于各种着陆页,对于我用的主题来说在页面上并不能链接到的,也就没有存在的意义。

分类法的概念

首先需要了解hugo中分类法的概念,hugo taxonomies 与内容无关的其他四种页面类型为 robotsTXT、RSS、sitemap 和 404。
请添加图片描述

根据图中我们可以看到hugo根据内容类型进行分类,比如/tags/ /categories/属于taxonomy的类型。而像/page/ /post/属于section的类型。

禁用分类法

想要禁用这些分类页面的话,只需要在config.yaml/config.toml中配置

# config.yaml
disableKinds: ["taxonomy", "section"]

重新构建后,我们再次访问/tags/,/post/等页面,发现已经无法访问了,当然其他正常页面不会受到影响。同理你也可以禁用404页面、sitemap、robots.txt等页面。
请添加图片描述

自定义sitemap

禁用分类法之后,那些页面也不会出现在sitemap.xml中。但是tags/xxx/index.html还是会出现在sitemap中,是因为我们没有关闭term分类,毕竟Stack主题默认显示标签云,关闭了标题功能直接没了。

但是我想要实现的是把这些标签页面剔除sitemap中,不需要被搜索引擎收录。实现这个也很简单,创建layout/_default/sitemap.xml,配置如下:

{{ printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:xhtml="http://www.w3.org/1999/xhtml">{{ range .Data.Pages }}{{ if not  (strings.Contains .RelPermalink "/tags") }}
  <url>
    <loc>{{ .Permalink }}</loc>{{ if not .Lastmod.IsZero }}
    <lastmod>{{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}</lastmod>{{ end }}{{ with .Sitemap.ChangeFreq }}
    <changefreq>{{ . }}</changefreq>{{ end }}{{ if ge .Sitemap.Priority 0.0 }}
    <priority>{{ .Sitemap.Priority }}</priority>{{ end }}{{ if .IsTranslated }}{{ range .Translations }}
    <xhtml:link
                rel="alternate"
                hreflang="{{ .Language.Lang }}"
                href="{{ .Permalink }}"
                />{{ end }}
    <xhtml:link
                rel="alternate"
                hreflang="{{ .Language.Lang }}"
                href="{{ .Permalink }}"
                />{{ end }}
  </url>{{ end }}{{ end }}
</urlset>

相比默认的sitemap配置,我们只加了一行代码。就是包含tags的链接不被引入sitemap。

{{ if not  (strings.Contains .RelPermalink "/tags") }}

熟悉hugo的同学应该知道hugo很多配置是通过覆盖默认配置来实现的,定义layout/assets目录下的一些文件就可以实现自定义head/css/sitemap等。

配置robots.txt

虽然sitemap中的tags链接已经被我们排除了sitemap,但还是有可能被搜索引擎收录到,所以我们需要配置static/robots.txt。

User-agent: *
Disallow: /tags/

自定义tags页面

如果tags对你来说很重要,需要被搜索引擎收录,或者需要添加描述,那么可以自定义tags页面的标题和描述。新建content/tags/yourtag/_index.html,跟分类的配置几乎一样

title: 标签
description: 标签描述

大功告成

至此我们已经实现了最初的全部需求,删除了不必要的页面,去除了sitemap中的tags页面,并且禁止了搜索引擎收录。那么为什么要删除这些页面呢?因为默认生成的tags页面使用默认的描述,标题也比较短,内容可能也不多,对于搜索引擎来说,大量短内容,无描述的页面并不是一个好现象。

  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值