Est-il possible de configurer une page HTML de base pour rediriger vers une autre page lors du chargement?
Est-il possible de configurer une page HTML de base pour rediriger vers une autre page lors du chargement?
Réponses:
Essayez d'utiliser:
<meta http-equiv="refresh" content="0; url=http://example.com/" />
Remarque: placez-le dans la section de tête.
De plus pour les navigateurs plus anciens si vous ajoutez un lien rapide au cas où il ne se rafraîchirait pas correctement:
<p><a href="http://example.com/">Redirect</a></p>
Apparaîtra comme
Cela vous permettra toujours de vous rendre où vous allez avec un clic supplémentaire.
0
moyen de se rafraîchir après 0 seconde. Vous voudrez peut-être donner à l'utilisateur un peu plus de temps pour savoir ce qui se passe.
J'utiliserais à la fois des méta et du code JavaScript et aurais un lien juste au cas où.
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta http-equiv="refresh" content="0; url=http://example.com">
<script type="text/javascript">
window.location.href = "http://example.com"
</script>
<title>Page Redirection</title>
</head>
<body>
<!-- Note: don't tell people to `click` the link, just tell them that it is a link. -->
If you are not redirected automatically, follow this <a href='http://example.com'>link to example</a>.
</body>
</html>
Pour être complet, je pense que la meilleure façon, si possible, est d'utiliser les redirections du serveur, alors envoyez un code d'état 301 . C'est facile à faire via des .htaccess
fichiers utilisant Apache , ou via de nombreux plugins utilisant WordPress . Je suis sûr qu'il existe également des plugins pour tous les principaux systèmes de gestion de contenu. De plus, cPanel a une configuration très simple pour les redirections 301 si vous l'avez installé sur votre serveur.
body
balises et autres. Peut-être qu'il valide et fonctionne peut-être dans les navigateurs courants. Je suis sûr qu'il y a des cas marginaux qui causent des problèmes, et l'avantage semble faible.
click here
un lien n'est pas conseillé, car le lecteur d'écran sera plus difficile à naviguer. Les liens doivent se trouver sur du texte décrivant la destination, afin que l'utilisateur sache où il arrivera avant de la suivre, et cependant il interagit avec elle.
Je aussi ajouter un lien canonique pour aider votre SEO personnes:
<link rel="canonical" href="http://www.example.com/product.php?item=swedish-fish"/>
La balise META suivante, placée entre l'intérieur de la tête, indiquera au navigateur de rediriger:
<meta http-equiv="Refresh" content="seconds; url=URL">
Remplacez secondes par le nombre de secondes à attendre avant de rediriger et remplacez URL par l'URL vers laquelle vous souhaitez qu'il redirige.
Alternativement, vous pouvez rediriger avec JavaScript. Placez-le à l'intérieur d'une balise de script n'importe où sur la page:
window.location = "URL"
Ceci est un résumé de toutes les réponses précédentes plus une solution supplémentaire utilisant HTTP Refresh Header via .htaccess
1. En-tête d'actualisation HTTP
Tout d'abord, vous pouvez utiliser .htaccess pour définir un en-tête d'actualisation comme celui-ci
Header set Refresh "3"
C'est l'équivalent "statique" de l'utilisation de la header()
fonction en PHP
header("refresh: 3;");
Notez que cette solution n'est pas prise en charge par tous les navigateurs.
2. JavaScript
Avec une autre URL :
<script>
setTimeout(function(){location.href="http://example.com/alternate_url.html"} , 3000);
</script>
Sans autre URL:
<script>
setTimeout("location.reload(true);",timeoutPeriod);
</script>
Via jQuery:
<script>
window.location.reload(true);
</script>
3. Meta Refresh
Vous pouvez utiliser la méta-actualisation lorsque les dépendances sur JavaScript et les en-têtes de redirection sont indésirables
Avec une autre URL:
<meta http-equiv="Refresh" content="3; url=http://example.com/alternate_url.html">
Sans autre URL:
<meta http-equiv="Refresh" content="3">
En utilisant <noscript>
:
<noscript>
<meta http-equiv="refresh" content="3" />
</noscript>
En option
Comme recommandé par Billy Moon, vous pouvez fournir un lien de rafraîchissement en cas de problème:
Si vous n'êtes pas redirigé automatiquement: <a href='http://example.com/alternat_url.html'>Click here</a>
Ressources
setTimeout
avec une chaîne. Passez une fonction à la place.
Il serait préférable de configurer une redirection 301 . Voir l'article 301 sur les redirections de Google Webmaster Tools .
Si vous êtes impatient de suivre les normes Web modernes, vous devriez éviter les redirections méta HTML simples. Si vous ne pouvez pas créer de code côté serveur, vous devez plutôt choisir la redirection JavaScript .
Pour prendre en charge les navigateurs désactivés JavaScript, ajoutez une ligne de redirection HTML meta à un noscript
élément. La noscript
méta-redirection imbriquée combinée avec la canonical
balise aidera également votre classement dans les moteurs de recherche.
Si vous souhaitez éviter les boucles de redirection, vous devez utiliser la location.replace()
fonction JavaScript.
Un code de redirection d'URL côté client approprié ressemble à ceci (avec un Internet Explorer 8 et un correctif inférieur et sans délai):
<!-- Pleace this snippet right after opening the head tag to make it work properly -->
<!-- This code is licensed under GNU GPL v3 -->
<!-- You are allowed to freely copy, distribute and use this code, but removing author credit is strictly prohibited -->
<!-- Generated by http://insider.zone/tools/client-side-url-redirect-generator/ -->
<!-- REDIRECTING STARTS -->
<link rel="canonical" href="https://stackoverflow.com/"/>
<noscript>
<meta http-equiv="refresh" content="0; URL=https://stackoverflow.com/">
</noscript>
<!--[if lt IE 9]><script type="text/javascript">var IE_fix=true;</script><![endif]-->
<script type="text/javascript">
var url = "https://stackoverflow.com/";
if(typeof IE_fix != "undefined") // IE8 and lower fix to pass the http referer
{
document.write("redirecting..."); // Don't remove this line or appendChild() will fail because it is called before document.onload to make the redirect as fast as possible. Nobody will see this text, it is only a tech fix.
var referLink = document.createElement("a");
referLink.href = url;
document.body.appendChild(referLink);
referLink.click();
}
else { window.location.replace(url); } // All other browsers
</script>
<!-- Credit goes to http://insider.zone/ -->
<!-- REDIRECTING ENDS -->
<meta http-equiv="refresh"
le W3C est déconseillé.
Vous pouvez utiliser une "redirection" META :
<meta http-equiv="refresh" content="0; url=http://new.example.com/address" />
ou la redirection JavaScript (notez que tous les utilisateurs n'ont pas activé JavaScript, alors préparez toujours une solution de sauvegarde pour eux)
<script language="javascript">
window.location = "http://new.example.com/address";
</script>
Mais je recommanderais plutôt d'utiliser mod_rewrite , si vous en avez la possibilité.
Placez le code suivant entre les balises <HEAD> et </HEAD> de votre code HTML:
<meta HTTP-EQUIV="REFRESH" content="0; url=http://example.com/index.html">
Le code de redirection HTML ci-dessus redirigera vos visiteurs vers une autre page Web instantanément. Le content="0;
peut être modifié en nombre de secondes pendant lesquelles vous souhaitez que le navigateur attende avant de rediriger.
J'ai trouvé un problème en travaillant avec une application jQuery Mobile , où dans certains cas ma balise d'en-tête Meta n'atteignait pas une redirection correctement (jQuery Mobile ne lit pas les en-têtes automatiquement pour chaque page, donc mettre JavaScript là-bas est également inefficace à moins de l'envelopper dans complexité). J'ai trouvé que la solution la plus simple dans ce cas était de mettre la redirection JavaScript directement dans le corps du document, comme suit:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="refresh" content="0;url=myURL" />
</head>
<body>
<p>You are not logged in!</p>
<script language="javascript">
window.location = "myURL";
</script>
</body>
</html>
Cela semble fonctionner dans tous les cas pour moi.
La manière simple qui fonctionne pour tous les types de pages est simplement d'ajouter une meta
balise dans la tête:
<html>
<head>
...
<meta HTTP-EQUIV="REFRESH" content="seconds; url=your.full.url/path/filename">
...
</head>
<body>
Don't put much content, just some text and an anchor.
Actually, you will be redirected in N seconds (as specified in content attribute).
That's all.
...
</body>
</html>
Vous devez utiliser JavaScript. Placez le code suivant dans vos balises head:
<script type="text/javascript">
window.location.assign("http://www.example.com")
</script>
Vous pouvez rediriger automatiquement par code d'état HTTP 301 ou 302.
Pour PHP:
<?php
Header("HTTP/1.1 301 Moved Permanently");
Header("Location: http://www.redirect-url.com");
?>
J'utilise un script qui redirige l'utilisateur de index.html vers l' url relative de la page de connexion
<html>
<head>
<title>index.html</title>
</head>
<body onload="document.getElementById('lnkhome').click();">
<a href="/Pages/Login.aspx" id="lnkhome">Go to Login Page<a>
</body>
</html>
Juste pour faire bonne mesure:
<?php
header("Location: example@example.com", TRUE, 303);
exit;
?>
Assurez-vous qu'il n'y a pas d'écho au-dessus du script, sinon il sera ignoré. http://php.net/manual/en/function.header.php
Utilisez simplement l'événement onload de la balise body:
<body onload="window.location = 'http://example.com/'">
Moteur de rasoir pour un délai de 5 secondes:
<meta http-equiv="Refresh"
content="5; url=@Url.Action("Search", "Home", new { id = @Model.UniqueKey }))">
Vous n'avez pas besoin de code JavaScript pour cela. Écrivez ceci dans la <head>
section de la page HTML:
<meta http-equiv="refresh" content="0; url=example.com" />
Dès que la page se charge à 0 seconde, vous pouvez accéder à votre page.
Pour autant que je les comprenne, toutes les méthodes que j'ai vues jusqu'à présent pour cette question semblent ajouter l'ancien emplacement à l'histoire. Pour rediriger la page, mais ne pas avoir l'ancien emplacement dans l'historique, j'utilise la replace
méthode:
<script>
window.location.replace("http://example.com");
</script>
Il s'agit d'une solution de redirection avec tout ce que je voulais mais que je n'ai pas trouvé dans un bel extrait propre à couper et coller.
Cet extrait présente un certain nombre d'avantages:
Comment utiliser:
Si vous avez migré un site entier, sur l'ancien serveur, arrêtez le site d'origine et créez-en un autre avec ce fichier comme fichier index.html par défaut dans le dossier racine. Modifiez les paramètres du site afin que toute erreur 404 soit redirigée vers cette page index.html. Cela attrape toute personne qui accède à l'ancien site avec un lien vers une page de sous-niveau, etc.
Accédez maintenant à la balise de script d'ouverture et modifiez les adresses Web oldsite et newSite, puis modifiez la valeur des secondes selon vos besoins.
Enregistrez et démarrez votre site Web. Travail fait - le temps d'un café.
<!DOCTYPE html>
<html>
<head>
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
<META HTTP-EQUIV="EXPIRES" CONTENT="Mon, 22 Jul 2002 11:12:01 GMT">
<style>
body { margin: 200px; font: 12pt helvetica; }
</style>
</head>
<body>
</body>
<script type="text/javascript">
// Edit these to suit your needs.
var oldsite = 'http://theoldsitename.com'
var newSite = "https://thenewsitename.com";
var seconds = 20; // countdown delay.
var path = location.pathname;
var srch = location.search;
var uniq = Math.floor((Math.random() * 10000) + 1);
var newPath = newSite + path + (srch === '' ? "?" + uniq : srch + "&" + uniq);
document.write ('<p>As part of hosting improvements, the system has been migrated from ' + oldsite + ' to</p>');
document.write ('<p><a href="' + newPath + '">' + newSite + '</a></p>');
document.write ('<p>Please take note of the new website address.</p>');
document.write ('<p>If you are not automatically redirected please click the link above to proceed.</p>');
document.write ('<p id="dvCountDown">You will be redirected after <span id = "lblCount"></span> seconds.</p>');
function DelayRedirect() {
var dvCountDown = document.getElementById("dvCountDown");
var lblCount = document.getElementById("lblCount");
dvCountDown.style.display = "block";
lblCount.innerHTML = seconds;
setInterval(function () {
seconds--;
lblCount.innerHTML = seconds;
if (seconds == 0) {
dvCountDown.style.display = "none";
window.location = newPath;
}
}, 1000);
}
DelayRedirect()
</script>
</html>
Rediriger en utilisant JavaScript, <noscript>
au cas où JS est désactivé.
<script>
window.location.replace("https://google.com");
</script>
<noscript>
<a href="https://google.com">Click here if you are not redirected automatically.</a>
</noscript>
Utilisez ce code:
<meta http-equiv="refresh" content="0; url=https://google.com/" />
Veuillez faire attention: mettez-le dans la balise head.
Vous pouvez le faire en javascript:
location = "url";
Vous pouvez utiliser ceci
<meta http-equiv="refresh" content="0; url=http://newpage.com/" />