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.