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?

user199337
la source

Réponses:

684

Vous pouvez faire une redirection relative:

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

ou

window.location.href = '/path'; //relative to domain
Kobi
la source
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.

Bob
la source
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 ../

Chris Ballance
la source
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.

Kornel
la source
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'
Jorge Santos Neill
la source