Chuyển hướng đến một URL tương đối trong JavaScript


363

Tôi có một vấn đề: Tôi muốn chuyển hướng qua JavaScript đến một thư mục ở trên. Mã của tôi:

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

URL trông như thế này:

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

Chuyển hướng chỉ ảnh hưởng đến điều này:

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

Nhưng muốn có cái này:

example.com/path/

Làm thế nào tôi có thể làm điều đó?

Câu trả lời:


684

Bạn có thể thực hiện chuyển hướng tương đối:

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

hoặc là

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

29
xem lý do tại sao bạn nên sử dụng window.location.replace stackoverflow.com/questions/503093/ trên
gideon

52
Khi bạn muốn mô phỏng một liên kết, bạn nên sử dụng window.location.href. Bạn chỉ nên sử dụng window.location.replacekhi bạn muốn mô phỏng chuyển hướng http (do đó không tạo mục lịch sử).
Benji XVI

24
Nhân tiện, document.locationđược dự định là một tài sản chỉ đọc. Nó là an toàn hơn để sử dụng window.location. Xem câu hỏi này .
Benji XVI

6
Tôi tìm thấy bằng cách sử dụng window.location.href = '../'chuyển hướng đến thư mục gốc của trang web và không "tăng cấp" như mong đợi. Khi trang hiện tại là "www.example.com/customers/list" tôi cần sử dụng './'. Tôi đoán điều này là do "danh sách" không được coi là cấp độ thư mục.
Marcus Cickyham

2
@MarcusCastyham, trong ví dụ của bạn, thư mục là / khách hàng / - vì vậy "tăng một cấp" là www.example.com/. Bây giờ nếu URL ví dụ của bạn là www.example.com/customers/list/ - nó sẽ chuyển hướng bạn đến www.example.com/customers/
Ubeogesh

12

Nếu bạn sử dụng, location.hostnamebạn sẽ nhận được một phần domain.com của bạn. Sau đó location.pathnamesẽ cung cấp cho bạn / đường dẫn / thư mục. Tôi sẽ phân chia location.pathnametheo / và lắp lại URL. Nhưng trừ khi bạn cần chuỗi truy vấn, bạn chỉ có thể chuyển hướng ..để đi đến một thư mục ở trên.


Trình duyệt của tôi sủa khi tôi đi location.path và dường như chỉ nhận ra location.pathname . Gợi ý?
Konrad Viltersten

location.path không chính xác, nó phải là location.hostname. Tôi đã thêm một chỉnh sửa vào bài viết để sửa lỗi này.
ygrichman

8

chuyển hướng đến ../


Nếu ứng dụng của bạn được lưu trữ trong một tiểu uri và ứng dụng không biết đường dẫn tiểu uri. Nếu bạn đang ở gốc ứng dụng của mình và bạn làm ../ ứng dụng sẽ không biết cách quay lại gốc. Ví dụ, cùng một ứng dụng được lưu trữ tại example.com/myappother.example.com/app2
ReggieB


5

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

.. có nghĩa là thư mục cha.


14
Điều đó đòi hỏi một nhấp chuột hoặc một số điều hướng do người dùng bắt đầu.
đệ quy

2

Tôi đang cố gắng chuyển hướng trang web hiện tại của mình sang phần khác trên cùng một trang, sử dụng JavaScript. Mã theo sau này làm việc cho tôi:

location.href='/otherSection'

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.