Redirection vers une URL relative en JavaScript


363

J'ai un problème: je souhaite rediriger via JavaScript vers un répertoire ci-dessus. Mon code:

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

L'URL ressemble à ceci:

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

La redirection affecte juste ceci:

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

Mais je veux avoir ceci:

example.com/path/

Comment pourrais-je faire ça?

Réponses:


684

Vous pouvez faire une redirection relative:

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

ou

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

29
voyez pourquoi vous devriez utiliser window.location.replace stackoverflow.com/questions/503093/…
gideon

52
Lorsque vous souhaitez simuler un lien, vous devez utiliser window.location.href. Vous ne devez l'utiliser que window.location.replacelorsque vous souhaitez simuler une redirection http (donc ne pas générer d'élément d'historique).
Benji XVI

24
Soit dit en passant, document.locationétait conçu comme une propriété en lecture seule. Il est plus sûr à utiliser window.location. Voir cette question .
Benji XVI

6
J'ai trouvé l'utilisation window.location.href = '../'redirigée vers la racine du site et non "un niveau plus haut" comme prévu. Lorsque la page actuelle est "www.example.com/customers/list", je devais utiliser './'. Je suppose que c'est parce que la "liste" n'est pas considérée comme un niveau de répertoire.
Marcus Cunningham

2
@MarcusCunningham, dans votre exemple, le répertoire est / clients / - donc "un niveau plus haut" est www.example.com/. Maintenant, si votre exemple d'URL était www.example.com/customers/list/ - il vous redirigerait vers www.example.com/customers/
Ubeogesh

12

Si vous utilisez, location.hostnamevous obtiendrez votre partie domain.com. Ensuite location.pathname, vous obtiendrez / chemin / dossier. Je voudrais diviser location.pathnamepar / et réassembler l'URL. Mais à moins que vous n'ayez besoin de la chaîne de requête, vous pouvez simplement rediriger vers ..pour aller dans un répertoire ci-dessus.


Mon navigateur aboie lorsque je vais sur location.path et il ne semble que reconnaître location.pathname . Conseils?
Konrad Viltersten

location.path est incorrect, il doit s'agir de location.hostname. J'ai ajouté une modification au message pour résoudre ce problème.
ygrichman

8

rediriger vers ../


Si votre application est hébergée dans un sous-uri et que l'application ne connaît pas le chemin du sous-uri. Si vous êtes à la racine de vos applications et que vous le faites ../ l'application ne saura pas comment revenir à sa racine. Par exemple, la même application est hébergée sur example.com/myapp et other.example.com/app2
ReggieB


5

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

.. signifie répertoire parent.


14
Cela nécessite un clic ou une autre navigation lancée par l'utilisateur.
récursive

2

J'essaie de rediriger mon site Web actuel vers une autre section de la même page, en utilisant JavaScript. Ce code de suivi fonctionne pour moi:

location.href='/otherSection'

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.