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.