htacces umleitung auf eine 503 Seite
lima-city → Forum → Die eigene Homepage → Internet Allgemein
after
anfrage
atomkraft
auftauchen
bot
code
dank
fehler
header
http
server
service
setzen
sonderzeichen
status
url
verbessern
vorkommen
wartungsarbeit
zeichen
-
Guten Abend.
Da ich Wartungsarbeiten plane, würde ich gerne meine Webseite per Statuscode 503 vom Netz nehmen.
Nun stellst sich mir die Frag: Wie mache ich das?
Kann man das mit der htacces regeln? Oder wie funktioniert das?
Und das wichtigste: Ich will eine richtige Lösung die Google nicht beeinträchtigt.
Durch den falschen Einsatz von Wartungsarbeiten-Seiten wird viel Potential verschenkt. Im Idealfall gibt man den Bots einen Status Code 503 Service Unavailable mit Retry-After header (Einschätzung wie lange der Ausfall dauert) zurück und gibt den menschlichen Usern eine informative Seite zurück, mit der Möglicheit z.B. telefonisch zu bestellen.
Quelle: http://www.traffictrends.de/wartungsarbeiten-und-status-code-503-service-unavailable.html
Währe froh wenn mir jemand helfen würde :)
Grüsse weissertiger2 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Versuch es so:
Du kannst da irgendwas hinschreiben, wichtig ist nur der header()!<?php header('HTTP/1.1 503 Service Unavailable'); ?><html> <head> <title>Wartungsarbeiten</title> </head> <body> <p>Die gewünschte Seite ist aufgrund von Wartungsarbeiten vorübergehend nicht verfügbar.</p> </body> </html>
-
weissertiger2 schrieb:
Ich kenne mich da nicht aus, aber habe gelesen, das man retray und conection: close setzen muss. (oder so)
heißt, dass die Verbindung zum Server geschlossen wird, nachdem die Anfrage abgearbeitet wurde (also kein Keep-Alive!). Dies sollte (soweit ich weiß) der Webserver selber machen.Connection: close
HTTP/1.1 defines the "close" connection option for the sender to signal that the connection will be closed after completion of the response. For example,
Connection: close
in either the request or the response header fields indicates that the connection SHOULD NOT be considered `persistent' (section 8.1) after the current request/response is complete.
HTTP/1.1 applications that do not support persistent connections MUST include the "close" connection option in every message.
Zum 503-Statuscode:503 Service Unavailable
Also: Retry-After sagt nach wie viel Zeit der Service wieder verfügbar sein sollte:
The server is currently unable to handle the request due to a temporary overloading or maintenance of the server. The implication is that this is a temporary condition which will be alleviated after some delay. If known, the length of the delay MAY be indicated in a Retry-After header. If no Retry-After is given, the client SHOULD handle the response as it would for a 500 response.The Retry-After response-header field can be used with a 503 (Service Unavailable) response to indicate how long the service is expected to be unavailable to the requesting client. This field MAY also be used with any 3xx (Redirection) response to indicate the minimum time the user-agent is asked wait before issuing the redirected request. The value of this field can be either an HTTP-date or an integer number of seconds (in decimal) after the time of the response.
Und solche Header setzt du über
, falls du das noch nicht wissen solltest.header('Retry-After: 42');
-
hackyourlife schrieb:
Okay, Danke .
heißt, dass die Verbindung zum Server geschlossen wird, nachdem die Anfrage abgearbeitet wurde (also kein Keep-Alive!). Dies sollte (soweit ich weiß) der Webserver selber machen.Connection: close
hackyourlife schrieb:
So?
Also: Retry-After sagt nach wie viel Zeit der Service wieder verfügbar sein sollte.
Und solche Header setzt du überheader('Retry-After: 42');
<?php header('HTTP/1.1 503 Service Unavailable'); header('Retry-After: 42'); ?><html> <head> <title>Wartungsarbeiten</title> </head> <body> <p>Die gewünschte Seite ist aufgrund von Wartungsarbeiten vorübergehend nicht verfügbar.</p> </body> </html>
42 heisst, als das zbs. der Google Bot in 42 Sekunden wieder vorbeischauen darf?
hackyourlife schrieb:
Ne, weiss ich nicht. Danke .
falls du das noch nicht wissen solltest. -
weissertiger2 schrieb:
Richtig. Um zu prüfen ob das funktioniert solltest du ein Programm wie Wireshark installieren und schauen ob der HTTP-Header stimmt.
So?
<?php header('HTTP/1.1 503 Service Unavailable'); header('Retry-After: 42'); ?><html> <head> <title>Wartungsarbeiten</title> </head> <body> <p>Die gewünschte Seite ist aufgrund von Wartungsarbeiten vorübergehend nicht verfügbar.</p> </body> </html>
42 heisst, als das zbs. der Google Bot in 42 Sekunden wieder vorbeischauen darf?
Wenn du Firefox hast kannst du auch "Live HTTP headers" installieren (Add-On) und bei den "Seiteninformationen" die HTTP-Header prüfen. -
Man sollte aber um die Performance zu schonen einen Retry-After von mindestens 300 einstellen.
Was von viele empfohlen wird.
Und in PHP solltest du möglichst ebenso die
setzen. Damit alles wunderbar ist.Connection: close.
Der empfohlene PHP-Teil:
<?php header('HTTP/1.1 503 Service Unavailable'); header("Status: 503 Service Unavailable"); header('Retry-After: 300'); header('Connection: close'); ?>
Der Status mit 503 ist für ätere Browser die kein HTTP/1.1 beherschen... und wird ebenso für fcgi/FastCGI benötigt.
Beitrag zuletzt geändert: 11.2.2012 12:52:24 von dexus85 -
Okay Danke viel mal @hackyourlife & @dexus85
Jetzt aber noch was: Wie kriege ich eine ganze Domain dazu den 503 Fehler anzuzeigen?
example.tld/irgendwas
example.tld/das-zweite-irgendwas
example.tld/naja
example.tld/das dritte-irgendwas
Mit einer htacces, oder?
Hierbei kenne ich leider nur die Version für einen 404 Fehler:
Aber so wird doch zuerst einen 404 ausgegeben und erst danach sobald umgeleitet wurde ein 503.ErrorDocument 404 /index.html
Wie mache ich das richtig?
Beitrag zuletzt geändert: 11.2.2012 15:08:12 von weissertiger2 -
weissertiger2 schrieb:
Mit mod_rewrite könntest du das machen:
Jetzt aber noch was: Wie kriege ich eine ganze Domain dazu den 503 Fehler anzuzeigen?RewriteEngine on RewriteRule ^(.*)$ 503.php [NC]
-
Du könntest noch etwas verbessern: da auf der Seite Umlaute vorkommen, solltest du diese als UTF-8 speichern und im Header mitteilen, dass es sich um UTF-8 handelt.
Ansonsten riskierst du, dass in manchen Ländern irgendwelche Zeichen statt ü, ... auftauchen. -
hackyourlife schrieb:
Du könntest noch etwas verbessern: da auf der Seite Umlaute vorkommen, solltest du diese als UTF-8 speichern und im Header mitteilen, dass es sich um UTF-8 handelt.
Ansonsten riskierst du, dass in manchen Ländern irgendwelche Zeichen statt ü, ... auftauchen.
Oder direkt die bessere Variante: Einfach die Sonderzeichen umschreiben:
ä -> ä Ä -> Ä
ö -> ö Ö -> Ö
ü -> ü Ü -> Ü
ß -> ß -
fatfreddy schrieb:
Dafür muss er bei so einem kurzen Dokument wie er es hat nur 3 Zeichen ersetzen und die Zeichencodierung so lassen wie sie ist. Ansonsten müsste er sich anschauen wie er die UTF-8-Codierung einsetzt. Das ist zwar normalerweise der bessere Weg, aber wegen so einem kleinen Dokument, das auch nur eine Fehlerseite beinhaltet, die mitteilen soll, dass die Seite gerade gewartet wird, ist der Aufwand für weissertieger2 zu hoch, sich UTF-8 anzuschauen.
anti-atomkraft schrieb:
Oder direkt die bessere Variante: Einfach die Sonderzeichen umschreiben:
Warum sollte das die bessere Variante sein? Macht doch nur mehr Arbeit. -
ich danke euch viel mal für den Hinweis. Ich werde das beachten :)
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage