

現在、Rails をバックエンドにしたSPAを作ろうと考えています。

ログインすると入れる、 `/user` 以下の画面を `react-router` の browserHistory を使って制御させたいと思っています。  
つまり、 `/user/hoge` にアクセスしても `/user/fuga` にアクセスしても Rails
が実行するアクションは常に同じで、描画はクライアント側でReactを使ってしたいと考えています。

いろいろ探していると、  
/user/hoge と /user/fuga のアクションをコントローラーに定義してどちらも同じビューを使う方法を見つけました。  
参考： <https://github.com/sugyan/react-router-scaffold>

確かにこれなら `react-router` が URL を変えたとしても、リロード可能です。  
でも、これって少し冗長じゃないでしょうか。

クライアントサイドでルートを増やしたらサーバーサイドでも同じルートを設定する必要があります。

なので、 `react-router` で解説されているようなことが、 `nginx` でできないかやってみました。  
参考： <https://github.com/reactjs/react-
router/blob/master/docs/guides/Histories.md#configuring-your-server>

[code]

    location /user/ {
      try_files $uri /user;
    }
    
[/code]

いろいろ試行錯誤して、こんな風に書くと、希望通りの動きをしました。

と、いうところまで来て、`nginx` を使ってまでやることなのか、という疑問が湧いてきましたのでここで質問させてもらいます。

Rails では `/user` 以下はどんなリクエストが来ても 404 を出さず規定のアクションを実行する、ようなルート設定はできないのでしょうか？  
あるいは、できるような gem が存在するのでしょうか？


CC BY-SA 3.0
2016-03-11T05:14:04.613
23017
2021-02-02T01:05:15.513
13129
question
javascript ruby-on-rails nginx
Rails で react-router を使う場合の設定


(コメントより)

自己解決しました。ルーティングの設定で `get '*anything'` を利用することで想定外のアクセスを全て同じアクションで処理できました。


CC BY-SA 4.0
2018-08-29T10:26:28.060
47912
2018-08-29T10:26:28.060
754
23017
answer