JavaScript'te göreli bir URL'ye yönlendirme


365

Bir sorunum var: JavaScript aracılığıyla yukarıdaki bir dizine yeniden yönlendirmek istiyorum. Kodum:

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

URL şöyle görünür:

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

Yönlendirme sadece bunu etkiler:

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

Ama buna sahip olmak istiyorum:

example.com/path/

Bunu nasıl yapabilirim?

Yanıtlar:


686

Göreli bir yönlendirme yapabilirsiniz:

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

veya

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

29
neden window.location.replace stackoverflow.com/questions/503093/…
— gideon

52
Bir bağlantıyı simüle etmek istediğinizde, kullanmalısınız window.location.href. Yalnızca window.location.replacebir http yönlendirmesini simüle etmek istediğinizde kullanmalısınız (böylece geçmiş öğesi oluşturmazsınız).
— Benji XVI

24
Bu arada, document.locationsalt okunur bir özellik olarak tasarlandı. Kullanımı daha güvenlidir window.location. Bu soruya bakın .
— Benji XVI

6
Ben window.location.href = '../'beklendiği gibi "bir seviye yukarı" değil, sitenin köküne yönlendirilmiş kullanarak bulundu . Geçerli sayfa "www.example.com/customers/list" olduğunda kullanmam gerekiyordu './'. Sanırım bu "liste" bir dizin seviyesi olarak kabul edilmez çünkü.
— Marcus Cunningham

2
@MarcusCunningham, örneğin, dizin / customer / - yani "bir düzey yukarı" www.example.com/ şeklindedir. Şimdi örnek URL'niz www.example.com/customers/list/ olsaydı - sizi www.example.com/customers/ adresine yönlendirir
— Ubeogesh

12

Eğer kullanırsanız location.hostnamedomain.com kısmını alacaksınız. Sonra location.pathnamesize / path / klasör verecektir. Ben bölmek location.pathnametarafından ve / URL'yi yeniden birleştirmek. Ancak querystring'e ihtiyacınız yoksa, ..yukarıdaki bir dizine gitmek için yeniden yönlendirebilirsiniz .


Benim tarayıcı kabukları ben gidince location.path ve sadece tanımak gibi görünüyor location.pathname . İpuçları?
— Konrad Viltersten

location.path yanlış, location.hostname olmalıdır. Bunu düzeltmek için yayına bir düzenleme ekledim.
— ygrichman



5

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

.. üst dizin anlamına gelir.


14
Bu, bir tıklama veya kullanıcı tarafından başlatılan başka bir gezinme gerektirir.
— özyinelemeli

2

Mevcut web sitemi JavaScript kullanarak aynı sayfadaki diğer bölümlere yönlendirmeye çalışıyorum. Bu takip kodu benim için çalışıyor:

location.href='/otherSection'

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.