2016-04-29 10 views
1

Meine Anwendung Reagieren auf www.mywebsite.com/myreactStammordner meiner Anwendungskonflikte reagieren mit React-Router

gehostet wird, wenn ich meine Routen definiert, ich habe so etwas wie getan:

<Router history={history}> 
    <Route path="/" component={App} /> 
     <Route path="login" component={Login} /> 
    </Route> 
</Router> 

Obwohl, es hält beschwert, dass /myreact nicht in der Route definiert ist.

Wenn ich es definieren, auf diese Weise:

<Route path="/myreact" component={App} /> 

und ich versuche, die URL www.mywebsite.com/myreact/login zugreifen zu können, wirft der Browser einen 404 Fehler.

Aber ich kann richtig auf www.mywebsite.com/myreact zugreifen.

Was soll ich tun?

Danke.

+0

funktionierten benutzen, sollten Sie versuchen Sie 'myreact 'zur Login-Route? 'path =" myreact/login "' – PhilVarg

+0

Nur ausprobiert, es funktioniert nicht ... – alexmngn

+0

versuche es mit browserHistory von react-router und deinen routen wie path = '/' & path = '/ login' – QoP

Antwort

2

Sie sollten in der Lage sein, ein benutzerdefiniertes history Objekt mit einem anderen Basisnamen für Ihre Apps 'root' URL zu erstellen. mit der useRouterHistory Erweiterung, wenn die Geschichte Objekt

https://github.com/reactjs/react-router/blob/master/docs/API.md#userouterhistorycreatehistory

einige relavent Kommentare in this github issue thread

import { createHistory } from 'history'; 
import { useRouterHistory } from 'react-router'; 

const browserHistory = useRouterHistory(createHistory)({ 
    basename: '/myreact' 
}); 

Ihre Routen Erstellen von Dateien jetzt browserHistory

<Router history={browserHistory}> 
    <Route path="/" component={App} /> 
     <Route path="login" component={Login} /> 
    </Route> 
</Router> 
+0

Das funktioniert einwandfrei wenn Ich erstelle einen Link, um von der Root-Seite auf die Login-Seite zuzugreifen. Obwohl, wenn ich versuche, auf/myreact/login zuzugreifen, direkt die URL einzugeben, dann bekomme ich den Fehler 404. Irgendein Vorschlag? – alexmngn

+0

Dies ist eine inhärente Eigenschaft des Typs "browserHistory" des Verlaufs. Wenn Sie manuell zu einer Route gehen, bevor der Router angeschlossen ist, müssen Sie eine Serverroute erstellen und Ihrer clientseitigen js übernehmen. https://github.com/reactjs/reac-router/blob/master/docs/guides/Histories.md#browserhistory – PhilVarg

+0

Super !!! Ich lasse es nur mit ein paar Regeln in meinem Htaccess arbeiten! Vielen Dank – alexmngn