孅いエンジニアブログ

VercelでSSGした時に末尾スラッシュとかindex.htmlをリダイレクトする

このブログはmicroCMSで記事書いて、Astroで作ったSSGをVercelでビルドしています。

何にもデザインしてないサイトだけど、いっちょ前にGoogle Search Consoleに登録していて、ふとページ見てたら重複がなんたらって言われました。

そういや末尾スラッシュ統一とかやってなかったなと思って、リダイレクト設定がVercelで設定できるのか調べてみたらできるっぽい。ということでやってみました。

プロジェクトルートにvercel.jsonという名前のファイルを作って以下の感じで書きます。

{
	"trailingSlash": false,
	"redirects": [
		{
			"source": "/:path(.*)index.html",
			"destination": "/:path*",
			"permanent": true
		}
	]
}

これで末尾のスラッシュ、index.htmlはともに308リダイレクトされるようになりました。(301リダイレクトしか知らなかったけど、308は301の上位互換らしい。へぇ~)

他の設定はここ見てください。

ちなみに@astro.js/sitemapでサイトマップ生成している場合はastro.config.mjsにtrailingSlash: "never"を書いた方が良いかもです。

import { defineConfig } from "astro/config";
import sitemap from "@astrojs/sitemap";

// https://astro.build/config
export default defineConfig({
	site: "https://blog.aki.wtf",
	trailingSlash: "never",
	integrations: [sitemap()]
});

なんかゴミが取れた気分でスッキリ!