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?

pengguna199337
sumber

Jawaban:

684

Anda dapat melakukan redirect relatif:

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

atau

window.location.href = '/path'; //relative to domain
Kobi
sumber
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.

Bob
sumber
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
8

dialihkan ke ../

Chris Ballance
sumber
Jika aplikasi Anda di-host di sub-uri dan aplikasi tidak tahu jalur sub-uri. Jika Anda berada di root aplikasi Anda dan lakukan ../ aplikasi tidak akan tahu bagaimana untuk kembali ke root. Misalnya, aplikasi yang sama dihosting di example.com/myapp dan other.example.com/app2
ReggieB
5

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

.. berarti direktori induk.

Kornel
sumber
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'
Jorge Santos Neill
sumber
0

coba ikuti kode js

location = '..'

Kamil Kiełczewski
sumber