Reindirizzamento a un URL relativo in JavaScript


363

Ho un problema: voglio reindirizzare tramite JavaScript a una directory sopra. Il mio codice:

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

L'URL è simile al seguente:

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

Il reindirizzamento influisce proprio su questo:

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

Ma voglio avere questo:

example.com/path/

Come potrei farlo?

Risposte:


684

Puoi eseguire un reindirizzamento relativo:

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

o

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

29
capire perché si dovrebbe usare window.location.replace stackoverflow.com/questions/503093/...
Gideon

52
Quando si desidera simulare un collegamento, è necessario utilizzare window.location.href. Si dovrebbe usare solo window.location.replacequando si desidera simulare un reindirizzamento http (quindi non generare un elemento cronologico).
Benji XVI,

24
A proposito, è document.locationstato inteso come una proprietà di sola lettura. È più sicuro da usare window.location. Vedere questa domanda .
Benji XVI,

6
Ho trovato utilizzando window.location.href = '../'reindirizzato alla radice del sito e non "un livello superiore" come previsto. Quando la pagina corrente è "www.example.com/customers/list" che avevo bisogno di usare './'. Immagino che questo sia perché "list" non è considerato come un livello di directory.
Marcus Cunningham,

2
@MarcusCunningham, nel tuo esempio, la directory è / customers / - quindi "un livello superiore" è www.example.com/. Ora se il tuo URL di esempio fosse www.example.com/customers/list/ - ti reindirizzerebbe a www.example.com/customers/
Ubeogesh

12

Se usi location.hostnameotterrai la tua parte domain.com. Quindi location.pathnameti darà / percorso / cartella. Vorrei dividere location.pathnameper / e riassemblare l'URL. Ma a meno che tu non abbia bisogno della stringa di query, puoi semplicemente reindirizzare verso ..una directory sopra.


Il mio browser abbaia quando vado location.path e sembra riconoscere solo location.pathname . Suggerimenti?
Konrad Viltersten,

location.path non è corretto, dovrebbe essere location.hostname. Ho aggiunto una modifica al post per risolvere questo problema.
ygrichman



5

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

.. significa directory principale.


14
Ciò richiede un clic o un'altra navigazione avviata dall'utente.
ricorsivo,

2

Sto cercando di reindirizzare il mio sito Web corrente ad un'altra sezione della stessa pagina, utilizzando JavaScript. Questo codice seguente funziona per me:

location.href='/otherSection'

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.