1 min read

記事のURLを/posts/:year/:month/:slugにする

nabeen

デフォルトの記事 URL は/:slugとなっているので、これを変更していく。

定義自体は@gridsome/source-filesystemで設定している部分と、gridsome-plugin-rssで設定している部分の 2 箇所あるので、忘れずに両方とも変更する。

module.exports = {
  plugins: [
    {
      use: '@gridsome/source-filesystem',
      options: {
        path: 'content/posts/**/*.md',
        typeName: 'Post',
        route: '/:slug',
      },
    },
    {
      use: 'gridsome-plugin-rss',
      options: {
        feedItemOptions: node => ({
          title: node.title,
          description: node.description,
          url: 'https://www.nabeen.me/' + node.slug,
          author: node.author,
          date: node.date,
        }),
      },
    },
  ],
};

なんで変えたいかというと、完全にお気持ち案件。別に URL で SEO は変わらないしね(変わるみたいな話もあるけど、完全に都市伝説だと思っている)。

別にこれでもいいっちゃいいんだけど、build 後にディレクトリ直下に大量に生成されるのがイヤで。記事が増えたら増えた分だけ生成されちゃうのって、僕の中では完全に許せない。

まぁ dist 配下なんて見ないんだけどな?!

変更内容

それぞれ/posts/:year/:month/:slugnode.pathにすればおけ。

module.exports = {
  plugins: [
    {
      use: '@gridsome/source-filesystem',
      options: {
        path: 'content/posts/**/*.md',
        typeName: 'Post',
        route: '/posts/:year/:month/:slug',
      },
    },
    {
      use: 'gridsome-plugin-rss',
      options: {
        feedItemOptions: node => ({
          title: node.title,
          description: node.description,
          url: 'https://www.nabeen.me' + node.path,
          author: node.author,
          date: node.date,
        }),
      },
    },
  ],
};

RSS フィードの方、ちょっと何設定すればいいか迷ったんだけど、Post型にはデフォルトでpathがついてるみたいで、素直にそれを使ってやればよかった。

P.S.

記事 URL って、みんなどれくらい意識してるんだろうね?

WordPress なら slug 設定できるけど多分やってない人も多いし、そもそもブログサービスの場合は自由度なかったりするし。あと、IT 系に疎い人だと普通にマルチバイトで設定してたりするしね。別にマルチバイトがダメ!とは思わないけど、気持ち悪い感は否めない。