wenn Ihre Anwendung nicht an der Wurzel eingesetzt wird (wie zum Beispiel mit einem virtuellen Verzeichnis, oder einfach nur in einer tieferen Hierarchie), dann werden Sie die URL vermasseln am Ende, wenn Sie history.pushState({}, '/newpath');
tun
Es gibt einen Paar Alternativen:
1) Holen Sie sich Ihren Root-Pfad in einer Javascript-Variablen, der Sie einfach die URL voranstellen können. In diesem Beispiel ist window.ViewModel.rootPath
nur ein willkürlicher Platz - modifizieren Sie dies einfach, wie auch immer Sie globale Variablen speichern möchten.
Sie müssen die rootPath
im Skript (Beispiel hier für .NET) setzen.
<script>
window.ViewModel.rootPath = "@Request.ApplicationPath";
</script>
history.pushState({}, window.ViewModel.rootPath + '/newpath');
2) Überprüfen Sie, ob die URL mit einem /
endet und wenn ja müssen Sie schon mit 1 Verzeichnisebene gehen. Hinweis: Bei diesem Ansatz müssen Sie das "übergeordnete" Verzeichnis des gesendeten Elements kennen - in diesem Fall YourAccount
.
history.pushState({ mode: 'Club' }, '',
(window.location.href.endsWith('/') ? '../' : '') +
'YourAccount/ManageClub/' + id);
Wenn die aktuelle URL /preview/store/YourAccount
ist, dann wird dies ../YourAccount/ManageClub/123
werden.
Wenn die aktuelle URL /preview/store/YourAccount/
ist, wird dies YourAccount/ManageClub/123
.
Diese beiden enden mit der gleichen URL.
das war es. Ich hätte schwören können, dass ich es ausprobiert habe. –
Danke !! So einfach ... – kaleazy
Das ist SEHR gefährlich, wenn Ihre Anwendung niemals im Root des Servers installiert wird! Siehe meine Antwort für eine Problemumgehung –