Mengarahkan kembali ke URL relatif dalam JavaScript


363

Saya memiliki masalah: Saya ingin mengarahkan ulang melalui JavaScript ke direktori di atas. Kode saya:

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

URL terlihat seperti ini:

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

Pengalihan hanya mempengaruhi ini:

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

Tetapi ingin memiliki ini:

example.com/path/

Bagaimana saya bisa melakukan itu?

Jawaban:


684

Anda dapat melakukan redirect relatif:

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

atau

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

29
lihat mengapa Anda harus menggunakan window.location.replace stackoverflow.com/questions/503093/...
gideon

52
Ketika Anda ingin mensimulasikan tautan, Anda harus menggunakan window.location.href. Anda hanya boleh menggunakan window.location.replaceketika Anda ingin mensimulasikan pengalihan http (sehingga tidak menghasilkan item riwayat).
Benji XVI

24
Omong-omong, document.locationdimaksudkan sebagai properti hanya-baca. Lebih aman digunakan window.location. Lihat pertanyaan ini .
Benji XVI

6
Saya menemukan menggunakan window.location.href = '../'diarahkan ke root situs dan tidak "naik satu tingkat" seperti yang diharapkan. Ketika halaman saat ini adalah "www.example.com/customers/list", saya perlu menggunakannya './'. Saya kira ini karena "daftar" tidak dianggap sebagai level direktori.
Marcus Cunningham

2
@MarcusCunningham, dalam contoh Anda, direktori adalah / pelanggan / - jadi "naik satu tingkat" adalah www.example.com/. Sekarang jika URL contoh Anda adalah www.example.com/customers/list/ - itu akan mengarahkan Anda ke www.example.com/customers/
Ubeogesh

12

Jika Anda menggunakan, location.hostnameAnda akan mendapatkan bagian domain.com Anda. Maka location.pathnameakan memberi Anda / path / folder. Saya akan memisah location.pathnamedengan / dan memasang kembali URL. Tetapi kecuali Anda membutuhkan querystring, Anda bisa mengarahkan ke ..direktori di atas.


Browser saya menggonggong ketika saya pergi location.path dan sepertinya hanya mengenali location.pathname . Petunjuk?
Konrad Viltersten

location.path salah, seharusnya location.hostname. Saya telah menambahkan hasil edit ke pos untuk memperbaikinya.
ygrichman



5

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

.. berarti direktori induk.


14
Untuk itu diperlukan klik atau navigasi lain yang dimulai oleh pengguna.
Rekursif

2

Saya mencoba mengalihkan situs web saya saat ini ke bagian lain di halaman yang sama, menggunakan JavaScript. Kode tindak ini berfungsi untuk saya:

location.href='/otherSection'

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.