シングルページアプリケーションでリロードすると404エラーになるときの対処法
シングルページアプリケーション(以下、SPA
)で、ブラウザをリロードしたときに404エラー(ページが見つからない)になるときの対処法を紹介します。
エラーになる原因
SPA
ではページ遷移はJavaScript
のフレームワークのルーティング機能で実装することが多いです。
フォルダ構成は以下のようになっていることが多いです。
- app.css
- app.js
- index.html
複数ページを作成していてもhtml
ファイルはindex.html
の1ファイルしか存在しません。
例えばルーティング機能でabout
ページを作成して、http://example.com/about
のURLに遷移した状態で、ブラウザをリロードします。
しかし、サーバーにはabout
のファイルは存在しないため、404エラーになります。
対処法
http://example.com/about
など、index.html
以外のURLでアクセスしたときでもindex.html
の内容を表示するようにします。
そのため、.htaccess
に以下の記載を追記します。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>