Nuxt.js SSGでリダイレクト
何を言ってるんだと思われるだろうが、どうしても必要だったので。
SSGするってことは、単純に全部のHTMLをレンダリングして、静的アクセスするだけってことになるんだけど、旧ページにアクセスした際どうするか問題が発生する。
SSRできれば問題ないんだけど、GithubPagesだと難しい。
基本的に旧ページは検索順位低めでいいので、空のページを用意して、そこから静的なjsを呼ぶことで解決した。
(Nuxt2 + composition-api)
import { defineComponent, useMeta } from '@nuxtjs/composition-api'
export default defineComponent({
setup() {
const { script } = useMeta()
script.value = [
{
src: '/redirect.js'
}
]
},
head: {},
})
const url = window.location.href;
const re = /([0-9]{4}\/[0-9]{2}\/[0-9]{2})\/(.*)\/$/;
const newstr = url.replace(re, 'blog/items/$2/');
window.location.href = newstr;
headにscriptタグ埋め込むという技。
あとはリダイレクト用のjsがうまくマッチすれば遷移するようになる。(マッチしなければなにもなし)