9
votes

JavaScript Comment changer de pathname of window.location propriété et rediriger

Je veux rediriger un utilisateur d'URL variables à une spécifique. J'ai essayé diverses saveurs de remplacement et je ne peux pas sembler avoir le comportement que je veux. Ce code fonctionne, sauf que je fournit le nom d'hôte. Je souhaite utiliser le nom d'hôte existant de windows.location.hostname et fournissez simplement un nouveau chemin de chemin. Parfois, les URL varient dans la taille et les barres obliques ('/').

http://somesite.com/xxx/yyy/zzz to http://somesite.com/NewPath
http://somesite.com/xxx/yyy to http://somesite.com/NewPath
http://somesite.com/xxx to http://somesite.com/NewPath


0 commentaires

3 Réponses :


4
votes

Vous pouvez toujours utiliser Les différents Emplacement Code> Propriétés à Recréez la pièce dont vous avez besoin et appendez la nouvelle partie à celle-ci:

window.location = location.protocol + "//" + location.hostname + "/NewPath";


1 commentaires

En effet. Je pourrais l'ajouter, mais je pense que @jasonharwig a la meilleure solution.



24
votes
location.pathname = '/newpath.html'

6 commentaires

Aussi une note, cela garde le hash dans l'URL, mais ce n'est probablement pas un problème.


Pas tout à fait sûr comment j'ai raté cela. Si simple. Merci!


@VSync, en définissant la propriété pathname Vous maintenez les paramètres de la requête et les identificateurs de fragments.


@Jasonharwig - Il suffit d'essayer de changer le chemin et il n'a pas Maintenir les paramètres de requête .. (FF30 / Win7)


Existe-t-il un moyen de changer le chemin de chemin afin que le navigateur ne "charge pas" le nouveau chemin de chemin? Je sais qu'il y a pushstate () mais j'essaie de supprimer efficacement l'URL la plus récente de l'historique du navigateur et pushstate () ne fait pas cela.


@ user1063287 Je crois que le Historique.ReplaCeste () < / code> méthode aiderait ici.



0
votes

Juste pour montrer le moyen difficile:

// Find everything up to the first slash and save it in a backreference
regexp = /(\w+:\/\/[^\/]+)\/.*/;

// Replace the href with the backreference and the new uri
newurl = windows.location.href.replace(regexp, "$1/dir/foo/bar/newpage.html");


0 commentaires