Перенаправление на относительный 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.