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.