Umleiten zu einer relativen URL in JavaScript

363

Ich habe ein Problem: Ich möchte über JavaScript in ein Verzeichnis oben umleiten. Mein Code:

location.href = (location.href).substr(0, (location.href).lastIndexOf('folder'));

Die URL sieht folgendermaßen aus:

example.com/path/folder/index.php?file=abc&test=123&lol=cool

Die Weiterleitung wirkt sich genau so aus:

example.com/path/&test=123&lol=cool

Aber will das haben:

example.com/path/

Wie könnte ich das machen?

user199337
quelle

Antworten:

684

Sie können eine relative Umleitung durchführen:

window.location.href = '../'; //one level up

oder

window.location.href = '/path'; //relative to domain
Kobi
quelle
29
Sehen Sie, warum Sie window.location.replace stackoverflow.com/questions/503093/…
gideon
52
Wenn Sie einen Link simulieren möchten, sollten Sie verwenden window.location.href. Sie sollten nur verwenden, window.location.replacewenn Sie eine http-Umleitung simulieren möchten (und somit kein Verlaufselement generieren).
Benji XVI
24
War übrigens document.locationals schreibgeschützte Eigenschaft gedacht. Es ist sicherer zu bedienen window.location. Siehe diese Frage .
Benji XVI
6
Ich habe festgestellt, dass die Verwendung window.location.href = '../'zum Stammverzeichnis der Site umgeleitet wurde und nicht wie erwartet "eine Ebene höher". Wenn die aktuelle Seite "www.example.com/customers/list" ist, musste ich verwenden './'. Ich denke, das liegt daran, dass "Liste" nicht als Verzeichnisebene betrachtet wird.
Marcus Cunningham
2
@MarcusCunningham, in Ihrem Beispiel ist das Verzeichnis / customers / - also "eine Ebene höher" ist www.example.com/. Wenn Ihre Beispiel-URL nun www.example.com/customers/list/
lautet, werden
12

Wenn Sie verwenden, erhalten location.hostnameSie Ihren domain.com-Teil. Dann location.pathnamegeben Sie / Pfad / Ordner. Ich würde location.pathnamedurch / teilen und die URL wieder zusammensetzen. Wenn Sie den Querystring nicht benötigen, können Sie einfach umleiten, ..um in ein Verzeichnis oben zu wechseln .

Bob
quelle
Mein Browser bellt, wenn ich auf location.path gehe, und es scheint nur location.pathname zu erkennen . Tipps?
Konrad Viltersten
location.path ist falsch, es sollte location.hostname sein. Ich habe dem Beitrag eine Bearbeitung hinzugefügt, um dies zu beheben.
Ygrichman
8

umleiten zu ../

Chris Ballance
quelle
Wenn Ihre App in einem Sub-Uri gehostet wird und die App den Sub-Uri-Pfad nicht kennt. Wenn Sie sich im Stammverzeichnis Ihrer Apps befinden und dies tun, weiß die App nicht, wie Sie zum Stammverzeichnis zurückkehren können. Zum Beispiel wird dieselbe App unter example.com/myapp und other.example.com/app2 gehostet
ReggieB
5

<a href="..">no JS needed</a>

.. bedeutet übergeordnetes Verzeichnis.

Kornel
quelle
14
Dies erfordert einen Klick oder eine andere vom Benutzer initiierte Navigation.
rekursiv
2

Ich versuche, meine aktuelle Website mithilfe von JavaScript auf einen anderen Abschnitt auf derselben Seite umzuleiten. Dieser folgende Code funktioniert für mich:

location.href='/otherSection'
Jorge Santos Neill
quelle
0

Versuchen Sie, js Code zu folgen

location = '..'

Kamil Kiełczewski
quelle