Railsでwebpackerを利用してVue.jsを取り入れた完全SPAなサイトを構築しようとして、ページのルーティングを設定するためにVueRouterを導入しました。
VueRouterでルーティングを設定すると、デフォルトで下のようなURLに「#」が追加された状態で識別されてしまいます。
「#」が途中に混じっているのはあまりいいとはいえないため、VueRouterに「mode: ‘history’」という設定を加えて消してあげます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import Vue from 'vue' import VueRouter from 'vue-router' import Page1 from './pages/page1.vue' import Page2 from './pages/page2.vue' Vue.use(VueRouter) export default new VueRouter({ mode: 'history', //← 追加 routes: [{ path: '/', component: Page1 }, { path: '/page2', component: Page2 } ] }); |
これで解決か・・・と思いきや、新たな問題が発生してしまいます。
ページ切り替え後のURLを直接アドレスバーに入力して読み込みをかけると、Routing Errorもしくは404エラーが発生してしまいます。
調べても対策方法がまちまちで結局どうすればいいか悩みましたが、自己解決(正しい直し方かは不明)したので、今回はこのエラーの原因と対策方法について紹介したいと思います。
前提条件
・Rails 6.0.2
・vue 2.6.11