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