2009-06-01 19 views
3

Ich habe einige Dateinamen in meinem Web geändert und jetzt möchte ich "301 Permanent Moved" Redirect von den alten Dateien auf die neuen Dateien.301 Redirect direkt in HTML-Datei

Das Problem ist, dass mein Web komplett von statischen HTML-Seiten gemacht wird und alle 301 Redirect-Tutorials beschreiben, wie es in PHP, ASP, Htaccess usw. zu tun ist. Ich möchte die Umleitung direkt in die alten HTML-Dateien schreiben das möglich? Oder muss ich mich an meinen Web-Provider wenden und die Weiterleitung auf dem Server lösen?

Das einzige, was ich über den Server weiß, ist, dass es unter Windows läuft und ich keine Serverkenntnisse habe.

EDIT: Mein Webhosting verwendet Microsoft IIS 7.0, also nehme ich an, die .htaccess ist hier nicht möglich?

EDIT # 2: Gerade jetzt mein Server Admin schrieb mir, dass, auch wenn ich nur statische HTML-Seiten verwenden, kann ich noch web.config-Datei verwenden, um einzelne HTML-Dateien umzuleiten. Das ist sehr nett.

+0

Überprüfen Sie das HTTP-Header-Feld 'Server' für wie der Server sich identifiziert. Sie können http://web-sniffer.net/ verwenden, um die HTTP-Headerfelder anzuzeigen. – Gumbo

Antwort

4

Sie können den HTTP-Statuscode nicht mit HTML ändern.

Aber wenn Sie einen Apache-Webserver verwenden, könnten Sie mod_rewrite oder mod_alias verwenden solche Anfragen an die neue Adresse zu umleiten:

# mod_rewrite 
RewriteEngine on 
RewriteRule ^old\.html$ /new.html [L,R=301] 

# mod_alias 
RedirectMatch 301 ^/old\.html$ /new.html 

bearbeiten Wie Sie nun klargestellt, dass du bist Mit IIS 7, werfen Sie einen Blick auf <httpRedirect> element for HTTP redirects.

+0

Mein Webhosting verwendet Microsoft-IIS/7.0, gibt es eine ähnliche Möglichkeit oder Umleitung? – user20353

+0

Werfen Sie einen Blick auf diese: http://www.iis.net/ConfigReference/system.webServer/httpRedirect – Gumbo

3

Nein, das ist nicht möglich. HTML wird vom Server nicht verarbeitet und kann daher keine HTTP-Header festlegen.

Sie sollten sich stattdessen die Apache-Konfiguration ansehen (z. B. mit .htaccess).

Auf seinem simplist könnten Sie tun:

Redirect 301 old.html http://example.com/new/ 
    Redirect 301 other-old.html http://example.com/newer/ 
+1

Sie können HTTP-Header-Felder nicht festlegen, das ist richtig. Aber die "http-equiv" in "meta" -Elementen sollen HTTP-äquivalent sein. Diese Informationen sollen also als HTTP-Header-Felder behandelt werden. – Gumbo

+2

Nein, http-equiv sollte vom HTTP-Server gelesen und analysiert werden, nicht von Clients. HTTP-Server tun das nicht, und Clients haben dafür ziemlich schlechte Unterstützung. Es ist ein halb totes, halb zerbrochenes Feature, das in HTML5 fast vollständig entfernt wird. – Kornel

+0

@proneL: Ah ja, du hast Recht. – Gumbo

2

Ich denke, Sie JavaScript und/oder Meta-Refresh verwenden könnten (wie von Gumbo vorgeschlagen), um die Benutzern von Ihren alten Seiten in den neuen zu umleiten. Etwas wie:

<html> 
<head> 
    <meta http-equiv="refresh" content="0;url=http://YourServer/NewFile.html" /> 

    <script type="text/javascript"> 
    location.replace('http://YourServer/NewFile.html'); 
    </script> 
</head> 
<body> 
    This page has moved. <a href="http://YourServer/NewFile.html">Click here for the new location</a> 
</body> 
</html> 
+1

Der einzige Grund für die JS-Weiterleitung scheint für Leute zu sein, die Meta-Refresh deaktivieren, was wohl nicht viele tun. Ich hatte diese Umleitung auf drei Ebenen auf einer Site, die ich pflege, aber seitdem habe ich die JS-Weiterleitung fallen gelassen. Jemand, der Meta-Refresh genug hasst, um es zu deaktivieren, wird wahrscheinlich hassen JS das gleiche tun. – Stewart