2017-12-25 18 views
0

http://localhost:8080/loginのようなものをルータに呼び出すと、反応ルータは経路を編集し、http://localhost:8080/#/login(有効なルート)に再ルーティングしたいときにhttp://localhost:8080/login#/(無効なルート)に再ルーティングします。これどうやってするの?反応中のハッシュタグルータにハッシュタグなしでルーティングする方法は?

私はすでにwebpack.configに

historyApiFallback: { index: '/' },

を追加しようとしました。私はこの情報を他にどのように見つけるか分かりません。

マイコード: https://pastebin.com/raw/XCvgV6rP

+0

ルートの設定と通話を共有できますか?すぐに使用可能な反応ルータは正確に「有効」に動作しています。 –

+0

ここに私のコードです@AndyTheos https://pastebin.com/raw/XCvgV6rP – Computor

答えて

0

あなただけの代わりにあなたが現在お使いのindex.jsファイルにインポートHashRouterのBrowserRouterを使用する必要があなたの問題を解決するために。

HashRouterはUIをURLと同期させるためにURLのハッシュ部分(つまりwindow.location.hash)を使用しますが、BrowserRouterはHTML5履歴API(pushState、replaceState、およびpopstateイベント)を使用してUIを維持しますURLに同期して

出典:ブラウザのURLバーにhttp://localhost:8080/loginを入力すると HashRouter BrowserRouter

+0

質問に記載されている問題は、ルータの使用\選択ではありません。間違ったURLのリダイレクトについてです。 –

+0

@Andy Theos私は知っていますが、一般的に最近のReactプロジェクトではBrowserRouterがより良い選択です。なぜ私はそれを私の答えに入れることにしたのですか – Marco

+0

合意しましたが、質問から私たちはプロジェクトとHashRouterを使う理由について多くの情報を得ることができません。 –

0

、後にEnterを押すと、ブラウザは、ハッシュルータが最後にそれ/login#/を作り、彼のスラッシュを追加し、loginにあなたを移動します。 Linkhistory.pushを使用している場合、HashRouterはうまくリダイレ​​クトします。 HashRouterでは、それ自体が/loginを持っていません。

@Marco答えをご覧ください。おそらく、あなたはおそらくBrowserRouter を使用して、これらの厄介なhashbangsを取り除くことができます。

関連する問題