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.