2009-10-31 69 views
232

Tengo un problema: Quiero redirigir a través de JavaScript a un directorio anterior. Mi código:Redirigir a una URL relativa en JavaScript

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

La url es el siguiente:

domain.com/path/folder/index.php?file=abc & test = 123 & lol = fresco

La redirección afecta esto:

domain.com/path/ & test = 123 & lol = fresco

Pero quiero tener esto:

domain.com/path/

¿Cómo podría hacer eso?

Respuesta

432

Usted puede hacer una redirección relativa:

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

o

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

ver por qué debería usar 'window.location.replace' http://stackoverflow.com/questions/503093/how-can-i-make-a-redirect-page-in-jquery/506004# 506004 – gideon

+37

Cuando desee simular un enlace, debe usar 'window.location.href'. Solo debe usar 'window.location.replace' cuando quiera simular una redirección http (por lo tanto, no generará un elemento de historial). –

+20

Por cierto, 'document.location' fue pensado como una propiedad de solo lectura. Es más seguro usar 'window.location'. Ver [esta pregunta] (http://stackoverflow.com/questions/2430936/whats-the-difference-between-window-location-and-document-location-in-javascript). –

10

redirigir a ../

+2

¿Por qué el vídeo digital? ¿Esto nunca funciona? –

+0

Si su aplicación está alojada en un sub-uri y la aplicación no conoce la ruta sub-uri. Si está en su raíz de aplicaciones y lo hace ../, la aplicación no sabrá cómo volver a su raíz. Por ejemplo, la misma aplicación está alojada en http://example.com/myapp/ y http://other.example.com/app2/ – ReggieB

10

Si utiliza location.hostname usted recibirá su parte domain.com. Entonces location.pathname le dará/ruta/carpeta. Me dividiría location.pathname por/y volvería a armar la URL. Pero a menos que necesite la cadena de consulta, puede simplemente redireccionar al .. para ir al directorio anterior.

+0

Mi navegador ladra cuando voy * location.path * y parece que solo reconoce * location.pathname *. ¿Sugerencias? –

+0

location.path es incorrecto, debe ser location.hostname. He agregado una edición a la publicación para solucionar esto. – ygrichman

5

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

.. significa directorio padre.

+9

Eso requiere un clic o alguna otra navegación iniciada por el usuario. – recursive

+0

Gracias por esto. Esto me ahorró tiempo – karthick

0

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

location.href='/otherSection' 
Cuestiones relacionadas