Перенаправление на относительный URL в JavaScript


363

У меня проблема: я хочу перенаправить через JavaScript в каталог выше. Мой код:

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

URL выглядит так:

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

Перенаправление влияет только на это:

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

Но хочу иметь это:

example.com/path/

Как я мог это сделать?

Ответы:


684

Вы можете сделать относительное перенаправление:

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

или

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

29
понять, почему вы должны использовать window.location.replace stackoverflow.com/questions/503093/…
gideon

52
Если вы хотите смоделировать ссылку, вы должны использовать window.location.href. Вы должны использовать только window.location.replaceтогда, когда вы хотите имитировать перенаправление http (таким образом, не генерируя элемент истории).
Бенджи XVI

24
Кстати, document.locationбыл задуман как свойство только для чтения. Это безопаснее в использовании window.location. Смотрите этот вопрос .
Бенджи XVI

6
Я обнаружил, что использование window.location.href = '../'перенаправлено в корень сайта, а не "на один уровень выше", как ожидалось. Когда текущая страница "www.example.com/customers/list" мне нужно было использовать './'. Я думаю, это потому, что «список» не рассматривается как уровень каталога.
Маркус Каннингем

2
@MarcusCunningham, в вашем примере это каталог / Customers /, поэтому «на один уровень вверх» - www.example.com/. Теперь, если ваш пример URL был www.example.com/customers/list/ - он перенаправил бы вас на www.example.com/customers/
Ubeogesh

12

Если вы используете, location.hostnameвы получите свою часть domain.com. Затем location.pathnameдаст вам / путь / папку. Я бы разделить location.pathnameна / и собрать URL. Но если вам не нужна строка запроса, вы можете просто перенаправить ..на каталог выше.


Мой браузер лает, когда я захожу в location.path, и кажется, что он распознает только location.pathname . Советы?
Конрад Вилтерстен

location.path неверен, это должно быть location.hostname. Я добавил редактирование в пост, чтобы исправить это.
Игричман

8

перенаправить на ../


Если ваше приложение размещено в подпрограмме URI, и приложение не знает путь к нему. Если вы находитесь в корне своего приложения и делаете .../, приложение не будет знать, как вернуться в свой корень. Например, одно и то же приложение размещено по адресу example.com/myapp и other.example.com/app2
ReggieB


5

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

.. означает родительский каталог.


14
Это требует щелчка или какой-либо другой пользовательской навигации.
рекурсивный

2

Я пытаюсь перенаправить мой текущий веб-сайт в другой раздел на той же странице, используя JavaScript. Этот следующий код работает для меня:

location.href='/otherSection'

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.