私は現在、単一ページのReactアプリケーションにfirebaseホスティングを使用しています。私はまた、404.htmlページを私のパブリックディレクトリに追加しました。私の前提は、ユーザーが自分のルートにない(反応ルータを使用している)URLを入力した場合にこのページが表示されるということですが、firebaseがURLが有効かどうかを知る方法はありません。現在、私の主なアプリケーションURLの/の後に何かランダムに入力すると、ページは空白になります。私のリアクションアプリ内でこれを説明する必要があるのでしょうか?React SPAにfirebaseホスティングを使用して404ページを提供するにはどうすればよいですか?
0
A
答えて
1
リアクタルーターは、クライアント側で404ページを処理できるようにすることができます。これは、どのようにすることができますセットアップ:キャッチすべてのルート(*)は、ルータが他のすべてを試し、最終的にこれに取得することができリアクト最後にそうでなければならないこと
var NotFound = React.createClass({
render: function() {
return (<h1>Page Not Found</h1>);
}
});
var App = React.createClass({
render: function() {
<Router history={browserHistory}>
<Route path="/" component={App}>
<Route path="first" component={SomeComponent}/>
<Route path="second" component={SomeOtherComponent}/>
<Route path="*" component={NotFound}/>
</Route>
</Router>
}
});
注意。
Here'sこれを説明する素敵な記事です。
4
これはfirebase.json
の設定を使用して部分的に解決できますが、Firebaseホスティングは静的コンテンツのみを提供するため、JavaScriptのロジックの一部を処理する必要があります。 /users/foo
が/index.html
へのルートだろう、上記の例では
{
"hosting":{
"rewrites":[
{"source":"https://stackoverflow.com/users/*","destination":"/index.html"},
{"source":"/account","destination":"/index.html"},
{"source":"/posts/*","destination":"/index.html"},
]
}
}
:しかし、あなたは、インスタンスのために、アプリケーションのルート構造を一致させるために、より具体的な書き換えを作成することができます
{
"hosting":{
"rewrites":[{"source":"**","destination":"/index.html"}]
}
}
:シンプルなキャッチオールは次のようになります/unknown/url
は404.html
にルーティングされます。
上記はあなたのところにあるようですが、実際のアプリケーションデータについてはわかりません。 /users/foo
が有効なユーザー名でない場合は、JavaScriptを使用して見つからないメッセージを/index.html
に表示する必要があります。
関連する問題
- 1. Angular SPAの404ページについてGoogleBotに通知するにはどうすればよいですか?
- 2. koaでフロントエンドを提供するにはどうすればよいですか?
- 3. feathersjsを使用してNode.jsでbower_componentsを提供するにはどうすればよいですか?
- 4. Springブートを使用してAngularJSアプリケーションのビューを提供するにはどうすればよいですか?
- 5. java sparkを使用してcsvファイルを提供するにはどうすればよいですか?
- 6. Vaporを使用して静的ファイルを提供するにはどうすればよいですか?
- 7. Mongrel2を使用してWSGI Pythonアプリケーションを提供するにはどうすればよいですか?
- 8. joomlaで404以上のステータスコードを提供するにはどうすればよいですか?
- 9. イメージピラミッドをフロントエンドに提供するにはどうすればよいですか?
- 10. Middlemanを使用してカスタム404ページを作成するにはどうすればよいですか?
- 11. リアクションヘルメットを使用してSPAのSEOを最適化するにはどうすればよいですか?
- 12. エクスプレスサブドメインでリアクションアプリを提供するにはどうすればよいですか?
- 13. create-react-appでSSL証明書を提供するにはどうすればよいですか?
- 14. Djangoを使ってwebpack'ed(Vue)アプリを提供するにはどうすればよいでしょうか?
- 15. Java WebサーバーからWebページにライブアップデートを提供するにはどうすればよいですか?
- 16. ngサービスを使用せずにAngular 5アプリを提供するにはどうすればよいですか?
- 17. Googleにキャッシュリンクを提供しないように指示するにはどうすればよいですか?
- 18. シングルページアプリケーション(SPA)ページを強制的に更新するにはどうすればよいですか?
- 19. フェイル・クオリティのサーバー・オーバーロード・ページをセットアップして提供するにはどうすればいいですか?
- 20. Golangのページにjsonデータを提供するにはどうすればよいですか?
- 21. 404ページを作成するにはどうすればよいですか?
- 22. Owin/Katanaで.aspxページを提供するにはどうすればよいですか?
- 23. htmlページでログファイルを提供するにはどうすればよいですか?
- 24. 初回訪問者にキャッシュされたページを提供するにはどうすればいいですか?
- 25. フェニックスでsitemap.xmlを動的に生成して提供するにはどうすればよいですか?
- 26. FirebaseでequalsTo()を使用するにはどうすればよいですか?
- 27. 古いインストールを検出して削除を提供するにはどうすればよいですか?
- 28. simplehttpserverのようにjavascriptにフラスコでファイルを提供するにはどうすればいいですか?
- 29. データベース内のユーザに対してSignalR接続を提供するにはどうすればよいですか?
- 30. Google Chromeで働いているGoogle PageActionサンプルエクステンションを提供するにはどうすればよいですか?
あなたのfirebase.jsonには「ソース」:「**」 'rewriteが含まれているはずです。つまり、すべてのURLをメインページに書き換えています。 Firebase Hostingは反応ルータを使用していることを知らないため、不一致のルートを検出することはできません。したがって、クライアント側のリアルーター構成にデフォルト/キャッチオールルートを追加する必要があります。これは有望そうです:http://stackoverflow.com/questions/32128978/react-router-no-not-found-route –
あなたのルータの設定方法については、どのコードも共有できますか? – KumarM