ロリポップでの React アプリルーティング有効化の全手順(デプロイ用サンプルあり)
📋 目次(クリックで展開)
ルーティング機能を含む react アプリケーションを、ロリポップにデプロイする際の設定方法を紹介します。これからレンタルサーバーにポートフォリオを公開したい方におすすめの内容になっています。記事最下部に、デプロイ用のサンプルも用意しています。
レンタルサーバーへのデプロイ時にルーティングが動かなくなる問題
開発環境では、react-router-dom は Link コンポーネントの to プロパティに、遷移先コンポーネントを指定すればルーティングが機能します。チュートリアルの通りですね。しかし、ロリポップなどのレンタルサーバーにデプロイする際には、そのままでは react アプリケーションはルーティングが機能しません。別途、追加の設定が必要になります。レンタルサーバーを借りた後に悩む方も多い事象です。本稿では対応方法をご紹介します。
package.json に homepage プロパティを追記する
homepage プロパティに、デプロイ先のディレクトリを指定します。「ロリポップ契約ドメイン」に、ご自身の契約しているドメインを記述します。「react-routing-app」は、デプロイ先のディレクトリとなります。
{ "name": "react-routing-app", "version": "0.1.0", "private": true, "homepage": "https://ロリポップ契約ドメイン/react-routing-app/", "dependencies": { ... }, "scripts": { ... }, "eslintConfig": { ... }, "browserslist": { ... }}.htaccess ファイルを追加する
React のクライアントサイドレンダリングでは、“react-routing-app/about” や “react-routing-app/contact” を要求する際にも、about.html や contact.html がリターンされるわけではなく、常に index.html を利用します。ルーティング発生時に、常に index.html がリターンする指定を記述します。
RewriteEngine OnRewriteBase /react-routing-app/RewriteRule ^index\.html$ - [L]RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . /react-routing-app/index.html [L]この .htaccess ファイルは、public フォルダ配下に保存します。

Router basename プロパティを設定する
react-router-dom の Router コンポーネントの basename プロパティに、デプロイ先ディレクトリ名を指定します。
function App() { return ( <Router basename="/react-routing-app"> <nav> <ul> <li> <Link to="/">Home</Link> </li> <li> <Link to="/about">About</Link> </li> <li> <Link to="/contact">Contact</Link> </li> </ul> </nav>
<Routes> <Route path="/" element={<Home />} /> <Route path="/about" element={<About />} /> <Route path="/contact" element={<Contact />} /> </Routes> </Router> );}これら3つの設定を行うことで、ロリポップ上で react アプリケーションのルーティング機能が動作するようになります。
デプロイ用サンプルアプリケーション
注意点
package.json の homepage プロパティを、ご自身の契約しているロリポップのドメイン名に変更の上、ご利用ください。※下記参照
{ "name": "react-routing-app", "version": "0.1.0", "private": true, "homepage": "https://ロリポップ契約ドメイン/react-routing-app/", "dependencies": { "@testing-library/jest-dom": "^5.17.0",PR:ロリポッププラン一覧
React そのものは、HTML, CSS, JavaScript の集合体として動作しますので、ロリポップのどのプランでも大丈夫です。今回のデプロイ用サンプルアプリケーションも、もちろんロリポップ上で動作します。ロリポップは安価でサーバーを借りることができるので、ポートフォリオサイトの作成・公開に最適です。

💬 コメント