PHP Wartungsseite ausgeben und Webseite sperren!

Belee

Lt. Commander
Registriert
Dez. 2006
Beiträge
1.518
Hallo Leute

Was wäre die einfachste und sicherste Lösung?

Vorhaben:
CronJob startet um 3:00h ein Wartungsscript, dieses macht was an der Datenbank wie auch an einigen Textdateien. Zu dieser Zeit würde ich gerne die Webseite für alle sperren - auch für Bots.

Nun, ich könnte in dem Script was vom CronJob gestartet wird, erst die htaccess austauchen, nur wie mache ich das wieder rückgängig? also wenn die Arbeiten an der DB erlediegt sind?
 
Du könntest am Anfang des CronJobs die htaccess anpassen und einen 303 oder 307 Redirect ausgeben (Moved Temporarily). Am Ende entfernst du die Zeile wieder (oder kopierst die originale Datei wieder zurück) und schon läuft alles wieder problemlos.
 
Würde ich lassen dadurch kannst du dir so derartig dein Google Ranking zerschießen das glaubst du nicht.
 
Warum die 3xx Redirects? Der korrekte Errorcode ist '503 Service Unavailable'.


Das Ranking wird zerschossen, wenn man mit falschen Statusmeldungen, wie Redirects herumspielt, ein '503 Service Unavailable' hingegen sagt genau folgendes aus:
RFC 2616 section 10.5.4 schrieb:
10.5.4 503 Service Unavailable


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.

Note: The existence of the 503 status code does not imply that a
server must use it when becoming overloaded. Some servers may wish
to simply refuse the connection.
 
VPN-User schrieb:
Hm. Womöglich einfach 'danach'?

Yuuri schrieb:
Du könntest am Anfang des CronJobs die htaccess anpassen und einen 303 oder 307 Redirect ausgeben (Moved Temporarily). Am Ende entfernst du die Zeile wieder (oder kopierst die originale Datei wieder zurück) und schon läuft alles wieder problemlos.

Ich dachte eher an sowas:
PHP:
RewriteRule !maintenance\.html http://www.seite.de/maintenance.html [R]

Dafür muss ich doch keinen ErrorCode liefern, wozu? für Google?
 
@Belee
Wie lange braucht denn dein CronJob? Hast du mal die Ausfrühungszeit protokolliert?

Weil die HTTP-Status-Codes dafür gedacht sind...?!

Zudem solltest du bedenken, dass nicht nur Google sondern auch Browser zwischen 2xx, 3xx, 4xx & 5xx unterscheiden können. 5xx zeigt, dass nicht der Klient das Problem ist.
 
Zuletzt bearbeitet:
Belee schrieb:
Dafür muss ich doch keinen ErrorCode liefern, wozu? für Google?
Richtig, für Suchmaschinen. Die wollen gerne wissen warum sich was verändert hat. Deshalb sollte man immer den korrekten Statuscode benutzen.

Belee schrieb:
PHP:
RewriteRule !maintenance\.html http://www.seite.de/maintenance.html [R]
Damit machst du einen Redirect mir 302 ("See Other"). Richtig wäre wie luky37 schon gesagt hat 503, denn deine Seite wurde ja nicht verschoben sondern ist nur gerade nicht erreichbar.
Du solltest also besser einen Redirect mit 503 machen:
PHP:
RewriteRule !maintenance\.html http://www.seite.de/maintenance.html [R=503]
Für den User sieht es gleich aus, aber Suchmaschinen wissen, dass du nur eine Wartung durchführst.
 
Mich würde viel mehr interessieren, warum du die Webseite sperren musst, ein Backup kann eigentlich parallel zum normalen Betrieb gemacht werden, da braucht nix gesperrt werden.
Maximal wird die Webseite eben in einen degraded-Mode versetzt bei der einige Funktionalitäten deaktiviert werden und ein 503 Service Unavailable zurückgegeben wird.
 
Eagle-PsyX- schrieb:
@Belee
Wie lange braucht denn dein CronJob? Hast du mal die Ausfrühungszeit protokolliert?

Weil die HTTP-Status-Codes dafür gedacht sind...?!

Zudem solltest du bedenken, dass nicht nur Google sondern auch Browser zwischen 2xx, 3xx, 4xx & 5xx unterscheiden können. 5xx zeigt, dass nicht der Klient das Problem ist.

Hi @eagle..

Der brauch ca. ne Minute (bis jetzt), deshalb habe ich mir auch nie Gedanken drum gemacht, weils ja nix ist.

@TheCadillacMan
Ja, werde ich dann auch so machen, danke.

Also sollte man Redirekts allgemein nicht benutzen? bzw. nur wenn sich Seiten verschieben? und ist das ein MUSS? weil, stell dir vor du veränderst die ganze Struktur der Seite, willst du dann jede Seite redirecten? :freak:

@ice...
Weil noch eine Masse an Dateien verändert werden, sowie gelöscht usw.
Wenn ich jetzt die Seite online lasse und jedemand fordert so eine Seite an, dann, naja gut, ich kann die Fehler abstellen doch es würde halt nicht schön aussehen, deshalb lieber zu und dann weiß jeder was los ist.

Nochwas zu den bösen Redrects...ich habe z.B. in jedem Verzeichnis eine index.php, die sieht so aus..
PHP:
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://".$_SERVER['SERVER_NAME']."/");
header("Connection: close");
exit;
?>

Ist das schädlich für Google?
 
Zuletzt bearbeitet:
Belee schrieb:
Also sollte man Redirekts allgemein nicht benutzen? bzw. nur wenn sich Seiten verschieben? und ist das ein MUSS? weil, stell dir vor du veränderst die ganze Struktur der Seite, willst du dann jede Seite redirecten? :freak:

Wenn du den Linkjuice aller Seiten behalten möchtest wäre dies sehr sinnvoll, wenns dir wurscht ist dann nicht. Google findet das auch so wieder, nur kann dann die Indexierung der neuen alten Seiten wieder eine ganze Ecke dauern und die Suchergebnisse bzw. Links verweisen auf Seiten die nicht mehr existieren.
 
Einen redirect sollte man benutzen, wenn sich die URL temporär oder permanent ändert. Bei allen anderen Situationen sollte ein redirect nicht benutzt werden, weil es keinen Sinn macht.

Wenn der Request nicht erlaubt ist (403), sich der Content nicht finden lässt (404), wenn der Content entfernt wurde (410), oder wenn der Service temporär nicht verfügbar ist wegen Wartungsarbeiten oder Überlast (503), all dass und noch mehr kann man durch den Statuscode ausdrücken.

Warum es für SEO wichtig ist, den korrekten Header auszugeben?

- wenn Google einen 410 Gone erhält, dann wird die Seite wahrscheinlich aus dem Index gestrichen
- wenn Google öfters 404 Not found erhält, dann wird auch hier die URL aus dem Index entfernt (+ die Seite abgewertet)
- wenn Google einen permanenten Redirect erhält, dann wird die URL im Index durch deine Wartungsarbeiten URL ausgetauscht, inklusive Content

Wenn du Google hingegen den, in diesem Fall korrekten Status '503 Service Unavailable' ausgibst, dann versteht der Googlebot, dass der aktuelle Content auf der Seite nicht ausschlaggebend ist, es sich nur um ein temporäres Problem handelt und der Aufruf später wiederholt werden kann.
 
Zurück
Oben