1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

react-routerでルーティングしているSPAをapacheで公開する

Last updated at Posted at 2024-11-09

1. やりたいこと

react-routerやRemix SPAモードでビルドしたindex.htmlをapacheで公開したい

2. どうすれば良いか

2-1. リダイレクトを設定する

.htaccessファイルに以下を追加すればapacheがリダイレクトしてくれます

.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.html [L]

上記のように設定すると、URLにファイルもディレクトリも存在しない場合にindex.htmlにリダイレクトされます。このとき、開くファイルはリダイレクトされていますがブラウザはURLを維持しているので、JavaScriptからURLを取得することでルーティングが適用されます

2-2. リダイレクトを有効にする

上記で上手く動かない場合はリダイレクトが無効になっています
その場合はhttpd.confに追加してrewrite_moduleとリダイレクトを有効にしてやります

/usr/local/apache2/conf/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so

<Directory "/usr/local/apache2/htdocs">
    AllowOverride All
    Require all granted
</Directory>

3. 全部httpd.confに書く場合

.htaccessでなくhttpd.confに同じ内容を書くこともできます
ドキュメントルートは別のところからvolumeでマウントしてきてたりするので、その場合はこっちの方がやりやすそう

/usr/local/apache2/conf/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so

<Directory "/usr/local/apache2/htdocs">
    Require all granted
    AllowOverride None
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^ index.html [L]
</Directory>

参考にした記事

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?