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

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

user199337
источник

Ответы:

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'
Хорхе Сантос Нил
источник