Redireccionando a una URL relativa en JavaScript

363

Tengo un problema: quiero redirigir a través de JavaScript a un directorio de arriba. Mi código:

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

La URL se ve así:

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

La redirección afecta solo esto:

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

Pero quiero tener esto:

ejemplo.com/path/

¿Cómo podría hacer eso?

usuario199337
fuente

Respuestas:

684

Puedes hacer una redirección relativa:

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

o

window.location.href = '/path'; //relative to domain
Kobi
fuente
29
vea por qué debería usar window.location.replace stackoverflow.com/questions/503093/…
gideon
52
Cuando desee simular un enlace, debe usarlo window.location.href. Solo debe usarlo window.location.replacecuando desee simular una redirección http (por lo tanto, no generar un elemento de historial).
Benji XVI
24
Por cierto, document.locationfue pensado como una propiedad de solo lectura. Es más seguro de usar window.location. Ver esta pregunta .
Benji XVI
66
Encontré el uso window.location.href = '../'redirigido a la raíz del sitio y no "un nivel superior" como se esperaba. Cuando la página actual es "www.example.com/customers/list", necesitaba usarla './'. Supongo que esto se debe a que "lista" no se considera como un nivel de directorio.
Marcus Cunningham el
2
@MarcusCunningham, en su ejemplo, el directorio es / clients /, así que "un nivel más arriba" es www.example.com/. Ahora, si su URL de ejemplo era www.example.com/customers/list/ - lo redirigiría a www.example.com/customers/
Ubeogesh
12

Si lo usa location.hostname, obtendrá su parte de domain.com. Luego location.pathnamele dará / ruta / carpeta. Me dividiría location.pathnamepor / y volvería a montar la URL. Pero a menos que necesite la cadena de consulta, puede redirigir a ..un directorio anterior.

Beto
fuente
Mi navegador ladra cuando voy a location.path y parece que solo reconoce location.pathname . Consejos?
Konrad Viltersten
location.path es incorrecto, debería ser location.hostname. He agregado una edición a la publicación para arreglar esto.
ygrichman
8

redirigir a ../

Chris Ballance
fuente
Si su aplicación está alojada en una uri secundaria y la aplicación no conoce la ruta de la uri secundaria. Si está en la raíz de su aplicación y lo hace ../ la aplicación no sabrá cómo volver a su raíz. Por ejemplo, la misma aplicación está alojada en example.com/myapp y other.example.com/app2
ReggieB
5

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

.. significa directorio principal.

Kornel
fuente
14
Eso requiere un clic o alguna otra navegación iniciada por el usuario.
recursivo el
2

Estoy tratando de redirigir mi sitio web actual a otra sección en la misma página, usando JavaScript. Este código de seguimiento funciona para mí:

location.href='/otherSection'
Jorge Santos Neill
fuente
0

intente seguir el código js

location = '..'

Kamil Kiełczewski
fuente