2017-04-06 6 views
2

Ich habe kürzlich eine Änderung an meinem Code vorgenommen, um browserHistory anstelle von hashHistory mit meinem React-Router zu verwenden. Obwohl einige Benutzer der Website, an der ich arbeite, die URL möglicherweise mit dem Hash-Wert versehen haben.React-Router: Leite meine URL von hashHistory auf browserHistory um

Die alte URL sieht aus wie www.mywebsite.com/#/page?query=param und ich möchte sicherstellen, dass wenn jemand es Lesezeichen gesetzt hat, es auf www.mywebsite.com/page?query=param umgeleitet wird.

Es sieht so aus, als wäre diese Umleitung nicht möglich mit .htaccess, also fragte ich mich, was wäre der sauberste Weg, das zu tun?

Danke.

+0

Wenn der Benutzer auf die URL klickt, die noch den Hash enthält, gelangen sie dann überhaupt zur Website? –

+0

Es gibt kein Hash mehr auf Links. Ich bin nur besorgt über Lesezeichen oder externe Links, die auf die Website verweisen. Sie greifen zwar auf die Seite zu, aber nicht auf die richtige Seite. – alexmngn

Antwort

-1

In Ihrem Hauptkomponente, die einen waren vermutlich Sie {this.props.children} machen Sie Zugriff auf die aktuelle URL zu bekommen this.props.location.pathname durch den Aufruf und wenn die URL einen Hash enthält, können Sie es abzustreifen und den Benutzer auf die URL sie gehen wollte umleiten zu zu.

Dies funktioniert nur, wenn der Benutzer zuerst von irgendwo anders auf Ihre Website zurückkehrt, aber wenn sie bereits auf Ihrer Website sind und das Lesezeichen verwenden, um an anderer Stelle auf der Website zu gehen, glaube ich nicht, dass dies funktioniert. Der Grund dafür ist, dass das componentDidMount der Hauptkomponente nur beim erstmaligen Laden oder bei der eigentlichen Seitenaktualisierung ausgelöst wird.

Hoffe, das hilft.

Verwandte Themen