J'ai un ensemble de liens avec #CHORS pointant vers une page Web unique et je voudrais passer en douceur à un modèle avec une page Web séparée pour chacun de ces liens. Je veux que les anciens liens continuent à travailler à l'aide d'une redirection.
ancien style de liaison: strong> p> neuf style: fort> p> Je sais que le serveur ne reçoit pas le nom #anchor dans la demande, mais JavaScript pourrait. p> JQuery irait bien, il est utilisé sur le site de toute façon. P> P>
5 Réponses :
Cela pourrait aider:
<a href="/all_products#A" onclick="return redirectMe(this);">A</a> <a href="/all_products#B" onclick="return redirectMe(this);">B</a> <a href="/all_products#C" onclick="return redirectMe(this);">C</a> <a href="/all_products#D" onclick="return redirectMe(this);">D</a> <a href="/all_products#E" onclick="return redirectMe(this);">E</a> <script type="text/javascript"> function redirectMe(a){ var aa=a+""; window.location=aa.replace(/#/g,"/"); } </script>
Downvote n'était pas de moi mais ce n'est pas ce dont j'ai besoin. Comme la réponse de Kkyy, cela ne fonctionnerait que pour des liens sur mon propre site Web, que je peux changer au nouveau schéma à tout moment. J'ai besoin de rediriger des liens enregistrés sur d'autres sites Web sur lesquels je n'ai pas de contrôle.
avec jQuery, il suffit de remplacer le HREF avec le bon:
$('a').click(function() { window.location = this.href.replace(/all_products#/, 'products/'); return false; });
Mais cela ne fonctionnerait que pour des liens sur mon site. Pas pour les liens existants d'autres sites. À droite?
J'espère que cela peut aider :)
var urlSplit = document.URL.split("#"); if (urlSplit[1]) { location.href = "http://www.example.org" + "/" + urlSplit[1]; } else { location.href = "http://www.example.org"; }
Remarque: il y a un problème avec l'utilisation de celle-ci dans une page "Par défaut" dans un répertoire pour IE8: il perd la valeur hachage.
Vous devriez préférer cette méthode pour extraire le hachage et Cette méthode pour rediriger pour éviter les problèmes énoncés dans les articles liés. J'ai ajouté une réponse mise à jour, y compris ces meilleures pratiques ci-dessous .
Mettez ceci aussi près du haut de votre HTML code> Comme vous pouvez l'exécution avant le reste de la page Ressources Télécharger:
<script>
function checkURL() {
var old_path = '/all_products';
if (window.location.pathname != old_path) {
// Not on an old-style URL
return false;
}
// Some browsers include the hash character in the anchor, strip it out
var product = window.location.hash.replace(/^#(.*)/, '$1');
// Redirect to the new-style URL
var new_path = '/products';
window.location = new_path + '/' + product;
}
checkURL();
</script>
J'ai ajouté cette nouvelle réponse pour inclure quelques meilleures pratiques pour les deux extraire le hachage de l'URL et dans une redirection .
// Closure-wrapped for security. (function () { var anchorMap = { "A": "/products/A", "B": "/products/B", "C": "/products/C" } /* * Best practice for extracting hashes: * https://stackoverflow.com/a/10076097/151365 */ var hash = window.location.hash.substring(1); if (hash) { /* * Best practice for javascript redirects: * https://stackoverflow.com/a/506004/151365 */ window.location.replace(anchorMap[hash]); } })();