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?

Respuestas:


684

Puedes hacer una redirección relativa:

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

o

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

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.


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 ../


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.


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'

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.