Przekierowanie do względnego adresu URL w JavaScript

363

Mam problem: chcę przekierować przez JavaScript do katalogu powyżej. Mój kod:

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

Adres URL wygląda następująco:

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

Przekierowanie wpływa tylko na to:

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

Ale chcę mieć to:

example.com/path/

Jak mogłem to zrobić?

użytkownik199337
źródło

Odpowiedzi:

684

Możesz dokonać względnego przekierowania:

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

lub

window.location.href = '/path'; //relative to domain
Kobi
źródło
29
zobacz, dlaczego powinieneś używać window.location.replace stackoverflow.com/questions/503093/…
gideon
52
Jeśli chcesz zasymulować łącze, powinieneś użyć window.location.href. Powinieneś używać tylko window.location.replacewtedy, gdy chcesz symulować przekierowanie http (nie generując elementu historii).
Benji XVI,
24
Nawiasem mówiąc, document.locationmiał być przeznaczony tylko do odczytu. Jest bezpieczniejszy w użyciu window.location. Zobacz to pytanie .
Benji XVI,
6
Znalazłem window.location.href = '../'przekierowanie do katalogu głównego witryny, a nie „jeden poziom wyżej”, zgodnie z oczekiwaniami. Gdy bieżąca strona to „www.example.com/customers/list”, musiałem użyć './'. Chyba dlatego, że „lista” nie jest uważana za poziom katalogu.
Marcus Cunningham
2
@MarcusCunningham, w twoim przykładzie katalog to / klienci / - więc „jeden poziom wyżej” to www.example.com/. Teraz, jeśli twój przykładowy adres URL to www.example.com/customers/list/ - przekieruje cię do www.example.com/customers/
Ubeogesh
12

Jeśli skorzystasz location.hostname, dostaniesz swoją domenę.com. Następnie location.pathnamepoda ci / path / folder. Podzielę location.pathnamewedług / i ponownie złożę adres URL. Ale jeśli nie potrzebujesz kwerendy, możesz po prostu przekierować do ..katalogu powyżej.

Kok
źródło
Moja przeglądarka szczeka, gdy wybieram location.path i wydaje się, że rozpoznaje tylko location.pathname . Poradnik?
Konrad Viltersten
lokalizacja.path jest niepoprawna, powinna to być lokalizacja.nazwa_hosta. Dodałem zmianę do wpisu, aby to naprawić.
ygrichman
8

przekierować do ../

Chris Ballance
źródło
Jeśli Twoja aplikacja jest hostowana w sub-uri, a aplikacja nie zna ścieżki sub-uri. Jeśli jesteś w katalogu głównym aplikacji i robisz to ../ aplikacja nie będzie wiedziała, jak wrócić do swojego katalogu głównego. Na przykład ta sama aplikacja jest hostowana pod adresem example.com/myapp i other.example.com/app2
ReggieB
5

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

.. oznacza katalog nadrzędny.

Kornel
źródło
14
Wymaga to kliknięcia lub innej nawigacji inicjowanej przez użytkownika.
rekursywny
2

Próbuję przekierować moją bieżącą stronę internetową do innej sekcji na tej samej stronie, używając JavaScript. Poniższy kod działa dla mnie:

location.href='/otherSection'
Jorge Santos Neill
źródło