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
3 Réponses :
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";
En effet. Je pourrais l'ajouter, mais je pense que @jasonharwig a la meilleure solution.
location.pathname = '/newpath.html'
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é code> pathname code> 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 B> 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 () code> mais j'essaie de supprimer efficacement l'URL la plus récente de l'historique du navigateur et
pushstate () code> ne fait pas cela.
@ user1063287 Je crois que le Historique.ReplaCeste () < / code>
méthode aiderait ici.
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");