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ć?

Odpowiedzi:


684

Możesz dokonać względnego przekierowania:

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

lub

window.location.href = '/path'; //relative to domain

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.


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 ../


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.


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'

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.