個人開発での Nuxt + Netlify での環境でハマった話です。
現在個人的に制作しているサービスは Nuxt で制作していて、外部からAPIでデータを非同期で取得して、それをHTMLに埋め込む形で開発しているんですが、ローカル環境での制作がほぼ終わり、ここいらで本番サーバーにデプロイするか~と Netlify にデプロイしたらAPIへのリダイレクトが上手くいかない・・・。
ローカル環境で制作しはじめた段階で CORS に引っ掛かり、これの処理は nuxt.config.js で proxy にAPIへのリンク先を噛ませる形で回避していたのですが、これをそのまま Netlify に入れても読めない様です。
(まあ予想はしてたんですけどね)
で、色々とググって調べていくと Netlify でのリダイレクトの設定の仕方は
➁netlify.toml を作成して、その中にリダイレクト先を記入する
③Netlifyの設定画面で環境変数からリダイレクトさせる
④NetlifyFunctionsでリダイレクトさせる(←これは未検証)
この中のいずれかで出来るっぽいです👀
(④は未検証なので何とも言えませんが、環境変数と組み合わせて使う事が多いっぽいですね)
今回はページのレンダリングと同期させてAPIを読ませるのではなく、ユーザーが選択した条件をパラメータに入れて非同期で取得したかったので、一番上の方法としました。
(特定のURLになった際にリダイレクトが発動する様なロジックにしました。)
余談ですが、環境変数を Netlify の設定画面から登録すると、ページが読まれた時にリダイレクトしますね。
(なので、同期で動かしたいなら環境変数でのリダイレクトも使えるかと思います。)
さて、その _redirects 設定時にハマった内容やポイントを記録しておくと、参考にしたのは下記のQiitaの記事。

ここに書かれてる
+ /common/* https://api.deckup.cards/common/:splat 200
+ /caches/* https://cache.deckup.cards/caches/:splat 200
/* /index.html 200
この + の部分。
この『+』が必要なん?ってなり、惑わされましたw
結果からいうと不必要でしたよ、ええw
アスタリスクや :splat はググれば答えが出てくるので割愛しますが、+に惑わされたので、これを見た人は惑わされない様に気を付けてくださいw
私の場合は2種類のAPIを今回使用しているのですが、
と記載する事で解決できました。
(あ、URLはもちろんダミーですw)
Netlifyはリダイレクトの設定を確認できるツールとして、この様なツールも用意されてました。
_redirects に記載する内容はここで確認できます。
(また、_redirects から netlify.toml に変換したい時も、設定を確認できますね。)
これを見つけるまでは、GitHubへプッシュして検証、プッシュして検証を繰り返してました・・・💦
こんな便利ツールがあるなら最初から知りたかったですねw
以上、Netlify のリダイレクトにハマった話と便利ツールの紹介でした。
参考

コメント