先日「Nyaaan」というWebサービスをリリースしました。
このWebサービスは「Nuxt.js」で作られており、「Netlify」でWebホスティングしています。
Twitterでシェアして楽しんでもらうことを前提としたWebサービスですので、TwitterCardの画像は広くリーチするのには大切なものです。
しかし以下のような詳細画面など、ルートパス(index.htmlにあたるページ)以外は404にってしまう現象になり、
実際URLにアクセスするとちゃんと画面は見れるけど、TwitterではTwitterCardが表示されないという現象が起こりました。
その原因と解決方法を記載します。
通常SPAサイトを作る場合、ルートパス以外でアクセスされた場合はindex.htmlにリダイレクトをする処理を書くと思います。
自分は404ページを用意して、Nuxt.jsの設定で「ページが存在しない場合、404を表示する」という設定を先にやっていました。
# SPA フォールバック
module.exports = {
generate: {
fallback: true, // '404.html' を使用したい場合
fallback: 'my-fallback/file.html' // ホスティングサービスで特定のロケーションを指定する必要がある場合
}
}
https://ja.nuxtjs.org/guide/routing/
この対応を先にやったことにより、ルーティングはちゃんと行われるけど404になってしまう現象になりました。
解決方法は、Netlify用のリダイレクト設定を入れてあげることです。
HISTORY PUSHSTATE AND SINGLE PAGE APPS 参照
https://www.netlify.com/docs/redirects/#rewrites-and-proxying
/static/_redirects に以下の内容を記載。
/* /index.html 200
これでルートパス以外はindex.htmlにHTTPステータス200でリダイレクトされます。
fallbackの設定を入れているならパスが見つからない場合、404.htmlに遷移します。
副業募集中😀 #AWS #GCP #golang #Python #Vim #技術ブログ #SRE #しがないラジオ #インフラ勉強会 欲しいもの: https://t.co/wZbbiO4e3d
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント