Um modernen Webstandards zu folgen und browserübergreifende Funktionen bereitzustellen, bevorzuge ich die Verwendung dieses fortschrittlichen Umleitungsgenerators
Patartics Milán,
1
Verwenden Sie .htaccess oder ein IIS-Äquivalent, um eine serverseitige Umleitung durchzuführen. Auf diese Weise funktioniert die Weiterleitung auch dann, wenn Ihre physische Seite verschwindet.
Dieses insider.zone-Tool hat meine Weiterleitungen in Kleinbuchstaben ausgeführt und 404s verursacht. Außerdem gibt es keine Möglichkeit, jemanden zu kontaktieren, der die Seite darüber erstellt hat.
Die Verwendung der Meta-Aktualisierung wird vom World Wide Web Consortium (W3C) nicht empfohlen. Ref: en.wikipedia.org/wiki/Meta_refresh . Es wird daher empfohlen, stattdessen die Serverumleitung zu verwenden. JavaScript-Weiterleitungen funktionieren möglicherweise nicht auf allen Mobiltelefonen, da JavaScript möglicherweise deaktiviert ist.
NinethSense
61
Zu Ihrer Information, das 0Mittel zum Aktualisieren nach 0 Sekunden. Möglicherweise möchten Sie dem Benutzer mehr Zeit geben, um zu wissen, was passiert.
Dennis
5
@ Paul Draper, das hängt von dem Server ab, den Sie ausführen
Gal Margalit
9
Ich habe den Tag-Verschluss hinzugefügt, um die XHTML5-Spezifikationen zu berücksichtigen.
ZenLulz
98
Der Kommentar von @ NinethSense lässt die Meta-Aktualisierung wie eine JavaScript-Weiterleitung erscheinen. Die Meta-Aktualisierung ist nicht JS und funktioniert auch dann, wenn JS deaktiviert ist.
Druska
1104
Ich würde sowohl Meta- als auch JavaScript-Code verwenden und für alle Fälle einen Link haben.
<!DOCTYPE HTML><htmllang="en-US"><head><metacharset="UTF-8"><metahttp-equiv="refresh"content="0; url=http://example.com"><scripttype="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 <ahref='http://example.com'>link to example</a>.</body></html>
Der Vollständigkeit halber denke ich, dass der beste Weg, wenn möglich, die Verwendung von Serverumleitungen ist. Senden Sie daher einen 301- Statuscode. Dies ist einfach über .htaccessDateien mit Apache oder über zahlreiche Plugins mit WordPress zu tun . Ich bin sicher, dass es auch Plugins für alle wichtigen Content-Management-Systeme gibt. Außerdem bietet cPanel eine sehr einfache Konfiguration für 301-Weiterleitungen, wenn Sie diese auf Ihrem Server installiert haben.
Diese Weiterleitungsseite kann mit HTML5 viel prägnanter sein: pastebin.com/2qmfUZMk (das in allen Browsern funktioniert und die w3c-Validierung besteht)
enyo
9
@enyo Ich bin kein großer Fan davon, bodyTags und ähnliches fallen zu lassen. Vielleicht validiert es und funktioniert vielleicht in gängigen Browsern. Ich bin sicher, dass es einige Randfälle gibt, die Probleme verursachen, und der Nutzen scheint gering zu sein.
Billy Moon
9
@Fricker, weil sie möglicherweise nicht klicken. Sie steuern möglicherweise über Sprache, tippen oder navigieren auf unbekannte Weise. Es ist eine Richtlinie zur Barrierefreiheit, Standards für Steuerelemente zu befolgen, z. B. das Standard-HTML-A-Attribut für Links zu verwenden, diese zu betrachten und als Link zu kommunizieren, und nicht vorzuschreiben, wie jemand damit interagieren muss. Es click herewird auch nicht empfohlen, einen Link zu verwenden, da der Bildschirmleser schwieriger zu navigieren ist. Links sollten sich in einem Text befinden, der das Ziel beschreibt, damit der Benutzer weiß, wo er ankommt, bevor er ihm folgt, und wie auch immer er mit ihm interagiert.
Billy Moon
2
@BillyMoon, Eigentlich wurde die Bedeutung von "Klick" bereits überladen, um auch all diese Bedeutungen einzuschließen. "Klick" reicht aus.
Pacerier
2
@BillyMoon Unter welchen Umständen ignoriert der Browser die Meta-Aktualisierung mit 0 Werten? Vielen Dank!
Sie würden zusätzlich zu einer Weiterleitung einen kanonischen Link verwenden? en.wikipedia.org/wiki/Canonical_link_element sagt, dass Google die Verwendung einer Weiterleitung anstelle eines kanonischen Links bevorzugt .
LarsH
1
@larsH Was ist für SEO am wichtigsten? Ist es der Weiterleitungslink oder die endgültige Zielseite?
Ersetzen Sie Sekunden durch die Anzahl der Sekunden, die gewartet werden muss, bevor sie umgeleitet werden, und ersetzen Sie die URL durch die URL, zu der sie umleiten soll.
Alternativ können Sie mit JavaScript umleiten. Platzieren Sie dies in einem Skript-Tag an einer beliebigen Stelle auf der Seite:
In der Frage wird speziell nach einer einfachen HTML-Seite gefragt. Ich denke, der Fragesteller kann .htaccess oder ähnliches nicht ändern (zum Beispiel mit Github Pages oder ähnlich eingeschränktem Hosting). 301 ist in solchen Fällen nicht machbar
Nicolas Raoul
26
Wenn Sie sich darauf freuen, modernen Webstandards zu folgen, sollten Sie einfache HTML-Meta-Weiterleitungen vermeiden. Wenn Sie keinen serverseitigen Code erstellen können, sollten Sie stattdessen JavaScript-Umleitung wählen .
Um JavaScript-deaktivierte Browser zu unterstützen, fügen Sie einem noscriptElement eine HTML-Metaumleitungszeile hinzu . Die noscriptverschachtelte Meta-Weiterleitung in Kombination mit dem canonicalTag hilft auch Ihren Suchmaschinen-Rankings.
Wenn Sie Umleitungsschleifen vermeiden möchten, sollten Sie die location.replace()JavaScript-Funktion verwenden.
Ein korrekter clientseitiger URL-Umleitungscode sieht folgendermaßen aus (mit einem Internet Explorer 8 und niedrigerem Fix und ohne Verzögerung):
<!-- 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 --><linkrel="canonical"href="https://stackoverflow.com/"/><noscript><metahttp-equiv="refresh"content="0; URL=https://stackoverflow.com/"></noscript><!--[if lt IE 9]><script type="text/javascript">var IE_fix=true;</script><![endif]--><scripttype="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 -->
Die Argumente, die w3c für HTML-Weiterleitungen bereitstellt, gelten auch für Javascript-Weiterleitungen. Darüber hinaus muss für Javascript-Weiterleitungen im Gegensatz zu HTML-Weiterleitungen Javascript aktiviert sein. Daher sind HTML-Weiterleitungen in Fällen, in denen beide verwendet werden können, strikt besser als Javascript-Weiterleitungen.
oder JavaScript- Umleitung (beachten Sie, dass nicht alle Benutzer JavaScript aktiviert haben, bereiten Sie daher immer eine Sicherungslösung für sie vor)
Der obige HTML-Weiterleitungscode leitet Ihre Besucher sofort auf eine andere Webseite weiter. Dies content="0;kann auf die Anzahl der Sekunden geändert werden, die der Browser warten soll, bevor er umgeleitet wird.
Bei der Arbeit mit einer jQuery Mobile- Anwendung ist ein Problem aufgetreten , bei dem in einigen Fällen mein Meta-Header-Tag eine Umleitung nicht ordnungsgemäß erreicht hat (jQuery Mobile liest Header nicht automatisch für jede Seite, sodass das Einfügen von JavaScript auch dann ineffektiv ist, wenn es nicht eingewickelt wird Komplexität). Ich fand die einfachste Lösung in diesem Fall, die JavaScript-Umleitung wie folgt direkt in den Hauptteil des Dokuments einzufügen:
<html><head><metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/><metahttp-equiv="refresh"content="0;url=myURL"/></head><body><p>You are not logged in!</p><scriptlanguage="javascript">
window.location ="myURL";</script></body></html>
Das scheint in jedem Fall für mich zu funktionieren.
Die einfache Methode, die für alle Arten von Seiten funktioniert, besteht darin, ein metaTag in den Kopf einzufügen:
<html><head>
...
<metaHTTP-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>
Dies ist keine Weiterleitung von einer HTML-Seite.
Bugmenot123
7
Ich verwende ein Skript, das den Benutzer von index.html zur relativen URL der Anmeldeseite umleitet
<html><head><title>index.html</title></head><bodyonload="document.getElementById('lnkhome').click();"><ahref="/Pages/Login.aspx"id="lnkhome">Go to Login Page<a></body></html>
Die Umleitungs-URL in der obigen Methode kann relativ sein. Beispiel: Sie möchten über index.html im Stammverzeichnis der Website zur Anmeldeseite oder zu einer beliebigen relativen Seite umleiten. Sie müssen Ihren Domainnamen nicht kennen. aber wenn Sie window.location.href = "xxx" setzen; Sie müssen den Domainnamen kennen.
In der Frage wird speziell nach einer einfachen HTML-Seite gefragt. Ich denke, der Fragesteller kann .htaccess oder ähnliches nicht ändern (zum Beispiel mit Github Pages oder ähnlich eingeschränktem Hosting). PHP ist in solchen Fällen nicht verfügbar.
Nicolas Raoul
Ich würde etwas, das von PHP (Pre-Hypertext Processor) generiert wurde, als "grundlegende HTML-Seite" betrachten. Nirgends in der Frage wurde ein Dateityp erwähnt.
Edward
6
Verwenden Sie einfach das Onload-Ereignis des Body-Tags:
Dies ist keine Weiterleitung von einer HTML-Seite.
Reduzierung der Aktivität
5
<!DOCTYPE html><html><head><metacharset="UTF-8"><title>Redirect to a page</title></head><bodyonload="window.location.assign('http://example.com')"></body></html>
Dies ist bereits in der akzeptierten Antwort und den Top-Kommentaren behandelt - erwägen Sie, die Antwort zu bearbeiten, als eine doppelte zu veröffentlichen
RozzA
3
Soweit ich sie verstehe, scheinen alle Methoden, die ich bisher für diese Frage gesehen habe, den alten Ort in die Geschichte aufzunehmen. Um die Seite umzuleiten, aber nicht den alten Speicherort im Verlauf zu haben, verwende ich die folgende replaceMethode:
Dies ist eine Weiterleitungslösung mit allem, was ich wollte, aber nicht in einem schönen, sauberen Snippet zum Ausschneiden und Einfügen finden konnte.
Dieses Snippet hat eine Reihe von Vorteilen:
Mit dieser Option können Sie alle abfragenden Parameter abfangen und beibehalten, die die Benutzer in ihrer URL haben
macht den Link unqiue, um unerwünschtes Caching zu vermeiden
Mit dieser Option können Sie Benutzer über die alten und neuen Site-Namen informieren
zeigt einen einstellbaren Countdown
kann für Deep-Link-Weiterleitungen verwendet werden, da Parameter beibehalten werden
Wie benutzt man:
Wenn Sie eine gesamte Site migriert haben, stoppen Sie auf dem alten Server die ursprüngliche Site und erstellen Sie eine andere mit dieser Datei als Standarddatei index.html im Stammordner. Bearbeiten Sie die Site-Einstellungen so, dass alle 404-Fehler auf diese index.html-Seite umgeleitet werden. Dies fängt jeden auf, der auf die alte Site mit einem Link zu einer untergeordneten Seite usw. zugreift.
Gehen Sie nun zum Eröffnungsskript-Tag, bearbeiten Sie die Webadressen oldsite und newSite und ändern Sie den Sekundenwert nach Bedarf.
Speichern und starten Sie Ihre Website. Arbeit erledigt - Zeit für einen Kaffee.
<!DOCTYPE html><html><head><METAHTTP-EQUIV="CACHE-CONTROL"CONTENT="NO-CACHE"><METAHTTP-EQUIV="PRAGMA"CONTENT="NO-CACHE"><METAHTTP-EQUIV="EXPIRES"CONTENT="Mon, 22 Jul 2002 11:12:01 GMT"><style>
body {margin:200px;font:12pt helvetica;}</style></head><body></body><scripttype="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>');functionDelayRedirect(){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>
Umleiten mit JavaScript, <noscript>falls JS deaktiviert ist.
<script>
window.location.replace("https://google.com");</script><noscript><ahref="https://google.com">Click here if you are not redirected automatically.</a></noscript>
Antworten:
Versuchen Sie es mit:
Hinweis: Legen Sie es in den Kopfbereich.
Zusätzlich für ältere Browser, wenn Sie einen Quicklink hinzufügen, falls dieser nicht korrekt aktualisiert wird:
<p><a href="http://example.com/">Redirect</a></p>
Wird als angezeigt
Umleiten
Auf diese Weise können Sie mit einem zusätzlichen Klick immer noch dorthin gelangen, wo Sie hin möchten.
quelle
0
Mittel zum Aktualisieren nach 0 Sekunden. Möglicherweise möchten Sie dem Benutzer mehr Zeit geben, um zu wissen, was passiert.Ich würde sowohl Meta- als auch JavaScript-Code verwenden und für alle Fälle einen Link haben.
Der Vollständigkeit halber denke ich, dass der beste Weg, wenn möglich, die Verwendung von Serverumleitungen ist. Senden Sie daher einen 301- Statuscode. Dies ist einfach über
.htaccess
Dateien mit Apache oder über zahlreiche Plugins mit WordPress zu tun . Ich bin sicher, dass es auch Plugins für alle wichtigen Content-Management-Systeme gibt. Außerdem bietet cPanel eine sehr einfache Konfiguration für 301-Weiterleitungen, wenn Sie diese auf Ihrem Server installiert haben.quelle
body
Tags und ähnliches fallen zu lassen. Vielleicht validiert es und funktioniert vielleicht in gängigen Browsern. Ich bin sicher, dass es einige Randfälle gibt, die Probleme verursachen, und der Nutzen scheint gering zu sein.click here
wird auch nicht empfohlen, einen Link zu verwenden, da der Bildschirmleser schwieriger zu navigieren ist. Links sollten sich in einem Text befinden, der das Ziel beschreibt, damit der Benutzer weiß, wo er ankommt, bevor er ihm folgt, und wie auch immer er mit ihm interagiert.JavaScript
Meta-Tag
quelle
Ich würde auch einen kanonischen Link hinzufügen, um Ihren SEO- Leuten zu helfen :
quelle
Das folgende Meta-Tag, das sich zwischen dem Kopf befindet, weist den Browser an, umzuleiten:
Ersetzen Sie Sekunden durch die Anzahl der Sekunden, die gewartet werden muss, bevor sie umgeleitet werden, und ersetzen Sie die URL durch die URL, zu der sie umleiten soll.
Alternativ können Sie mit JavaScript umleiten. Platzieren Sie dies in einem Skript-Tag an einer beliebigen Stelle auf der Seite:
quelle
Dies ist eine Zusammenfassung aller vorherigen Antworten sowie eine zusätzliche Lösung, die den HTTP-Aktualisierungsheader über .htaccess verwendet
1. HTTP-Aktualisierungsheader
Zunächst können Sie mit .htaccess einen solchen Aktualisierungsheader festlegen
Dies ist das "statische" Äquivalent zur Verwendung der
header()
Funktion in PHPBeachten Sie, dass diese Lösung nicht von jedem Browser unterstützt wird.
2. JavaScript
Mit einer alternativen URL :
Ohne alternative URL:
Über jQuery:
3. Meta Refresh
Sie können die Meta-Aktualisierung verwenden, wenn Abhängigkeiten von JavaScript und Umleitungsheadern unerwünscht sind
Mit einer alternativen URL:
Ohne alternative URL:
Verwenden von
<noscript>
:Optional
Wie von Billy Moon empfohlen, können Sie einen Aktualisierungslink bereitstellen, falls etwas schief geht:
Wenn Sie nicht automatisch umgeleitet werden:
<a href='http://example.com/alternat_url.html'>Click here</a>
Ressourcen
Wikipedia Meta aktualisieren
Die Auswirkungen von META REFRESH auf die Leistung
Eine Seite einmal mit jQuery aktualisieren (neu laden)?
quelle
setTimeout
mit einer Zeichenfolge auf. Übergeben Sie stattdessen eine Funktion.Es wäre besser, eine 301-Umleitung einzurichten . Weitere Informationen finden Sie im Artikel 301 zu den Webmaster-Tools von Google .
quelle
Wenn Sie sich darauf freuen, modernen Webstandards zu folgen, sollten Sie einfache HTML-Meta-Weiterleitungen vermeiden. Wenn Sie keinen serverseitigen Code erstellen können, sollten Sie stattdessen JavaScript-Umleitung wählen .
Um JavaScript-deaktivierte Browser zu unterstützen, fügen Sie einem
noscript
Element eine HTML-Metaumleitungszeile hinzu . Dienoscript
verschachtelte Meta-Weiterleitung in Kombination mit demcanonical
Tag hilft auch Ihren Suchmaschinen-Rankings.Wenn Sie Umleitungsschleifen vermeiden möchten, sollten Sie die
location.replace()
JavaScript-Funktion verwenden.Ein korrekter clientseitiger URL-Umleitungscode sieht folgendermaßen aus (mit einem Internet Explorer 8 und niedrigerem Fix und ohne Verzögerung):
quelle
<meta http-equiv="refresh"
das W3C nicht mehr unterstützt.Sie könnten eine META "Weiterleitung" verwenden:
oder JavaScript- Umleitung (beachten Sie, dass nicht alle Benutzer JavaScript aktiviert haben, bereiten Sie daher immer eine Sicherungslösung für sie vor)
Aber ich würde lieber mod_rewrite empfehlen , wenn Sie die Option haben.
quelle
Sobald die Seite geladen ist, wird die
init
Funktion ausgelöst und die Seite umgeleitet:quelle
Platzieren Sie den folgenden Code zwischen den Tags <HEAD> und </ HEAD> Ihres HTML-Codes:
Der obige HTML-Weiterleitungscode leitet Ihre Besucher sofort auf eine andere Webseite weiter. Dies
content="0;
kann auf die Anzahl der Sekunden geändert werden, die der Browser warten soll, bevor er umgeleitet wird.quelle
Fügen Sie den folgenden Code in den
<head>
Abschnitt ein:quelle
Bei der Arbeit mit einer jQuery Mobile- Anwendung ist ein Problem aufgetreten , bei dem in einigen Fällen mein Meta-Header-Tag eine Umleitung nicht ordnungsgemäß erreicht hat (jQuery Mobile liest Header nicht automatisch für jede Seite, sodass das Einfügen von JavaScript auch dann ineffektiv ist, wenn es nicht eingewickelt wird Komplexität). Ich fand die einfachste Lösung in diesem Fall, die JavaScript-Umleitung wie folgt direkt in den Hauptteil des Dokuments einzufügen:
Das scheint in jedem Fall für mich zu funktionieren.
quelle
Die einfache Methode, die für alle Arten von Seiten funktioniert, besteht darin, ein
meta
Tag in den Kopf einzufügen:quelle
Sie sollten JavaScript verwenden. Fügen Sie den folgenden Code in Ihre Kopfmarken ein:
quelle
Sie können automatisch über den HTTP-Statuscode 301 oder 302 umleiten.
Für PHP:
quelle
Ich verwende ein Skript, das den Benutzer von index.html zur relativen URL der Anmeldeseite umleitet
quelle
Nur für ein gutes Maß:
Stellen Sie sicher, dass sich über dem Skript keine Echos befinden, da diese sonst ignoriert werden. http://php.net/manual/en/function.header.php
quelle
Verwenden Sie einfach das Onload-Ereignis des Body-Tags:
quelle
Rasiermotor für eine Verzögerung von 5 Sekunden:
quelle
quelle
Sie benötigen hierfür keinen JavaScript-Code. Schreiben Sie dies in den
<head>
Abschnitt der HTML-Seite:Sobald die Seite nach 0 Sekunden geladen ist, können Sie zu Ihrer Seite wechseln.
quelle
Soweit ich sie verstehe, scheinen alle Methoden, die ich bisher für diese Frage gesehen habe, den alten Ort in die Geschichte aufzunehmen. Um die Seite umzuleiten, aber nicht den alten Speicherort im Verlauf zu haben, verwende ich die folgende
replace
Methode:quelle
Dies ist eine Weiterleitungslösung mit allem, was ich wollte, aber nicht in einem schönen, sauberen Snippet zum Ausschneiden und Einfügen finden konnte.
Dieses Snippet hat eine Reihe von Vorteilen:
Wie benutzt man:
Wenn Sie eine gesamte Site migriert haben, stoppen Sie auf dem alten Server die ursprüngliche Site und erstellen Sie eine andere mit dieser Datei als Standarddatei index.html im Stammordner. Bearbeiten Sie die Site-Einstellungen so, dass alle 404-Fehler auf diese index.html-Seite umgeleitet werden. Dies fängt jeden auf, der auf die alte Site mit einem Link zu einer untergeordneten Seite usw. zugreift.
Gehen Sie nun zum Eröffnungsskript-Tag, bearbeiten Sie die Webadressen oldsite und newSite und ändern Sie den Sekundenwert nach Bedarf.
Speichern und starten Sie Ihre Website. Arbeit erledigt - Zeit für einen Kaffee.
quelle
Umleiten mit JavaScript,
<noscript>
falls JS deaktiviert ist.quelle
Verwenden Sie diesen Code:
Bitte beachten Sie: Stecken Sie es in die Kopfmarke.
quelle
Sie können es in Javascript tun:
quelle
Sie können dies verwenden
quelle