Перенаправлення на відносну 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 / ...
Гідеон

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/. Тепер, якщо ваша
прикладна

12

Якщо ви користуєтеся, location.hostnameви отримаєте частину домену.com. Потім location.pathnameдасть вам / шлях / папку. Я б розділив location.pathnameна / і зібрати URL-адресу. Але якщо вам не потрібна рядок запитів, ви можете просто перенаправитись, ..щоб перейти до каталогу вище.


Мій браузер гавкає, коли я йду location.path і, здається, розпізнає лише location.pathname . Підказки?
Конрад Вільтерстен

location.path невірний, він повинен бути location.hostname. Я додав редагування до публікації, щоб виправити це.
ygrichman

8

переадресація на ../


Якщо ваш додаток розміщено в суб-урі, а додаток не знає шлях суб-урі. Якщо ви знаходитесь в корені своїх додатків, і ви робите ../ додаток не знатиме, як повернутися до його кореня. Наприклад, цей же додаток розміщено на веб-сайті 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.