Stefan Kleeschulte: Status 503 mit htaccess Senden

Hi zusammen!

Ich habe auf meinem Webspace-Account mehrere Domains mit jeweils eigenen Hostings, etwa so:

abc.de     -> /abc.de/www
www.abc.de -> /abc.de/www
xyz.abc.de -> /abc.de/xyz
def.de     -> /def.de/www
www.def.de -> /def.de/www
xyz.def.de -> /def.de/xyz
uvw.def.de -> /def.de/uvw
usw.

Nun muss ich mit allen diesen Domains auf einen anderen Server umziehen, was mich etwa 2 bis 3 Tage kostet. In dieser Zeit sollen die Seiten auf dem alten Server nicht mehr erreichbar sein. Stattdessen soll bei jedem beliebigen Aufruf eine immer gleiche Fehlermeldung angezeigt und der HTTP-Status 503 gemeldet werden.

Hat jemand eine Idee, wie ich das mit einer einzigen .htaccess-Datei in / anstellen kann? (Ich kann mod_rewrite verwenden.)

Viele Grüße,
Stefan

  1. 你好 Stefan,

    [… 503 bei jeder URL …]
    Hat jemand eine Idee, wie ich das mit einer einzigen .htaccess-Datei
    in / anstellen kann? (Ich kann mod_rewrite verwenden.)

    Nur mit einer .htaccess-Datei wirst du das nicht hinkriegen. Du wirst auch
    ein CGI-Script bauen müssen, dass immer 503 zurücksendet und dann jeden
    Request darauf umleiten.

    再见,
     克里斯蒂安

    --
    Neues Plugin: mod_asciiart | Opera 8.10 für Gentoo über Portage
    Sein oder nicht sein, das ist hier die Frage!
    http://wwwtech.de/
    1. Hi Christian,

      Nur mit einer .htaccess-Datei wirst du das nicht hinkriegen. Du wirst auch
      ein CGI-Script bauen müssen, dass immer 503 zurücksendet und dann jeden
      Request darauf umleiten.

      Stimmt - ich dachte erst, dass es mit dem Flag [R=503] gehen könnte (bei
      RewriteRule), was allerdings nicht geht.

      Jetzt bin ich gerade aber noch auf die Header Direktive gestoßen:

      Header [condition] set|append|add|unset|echo header [value] [env=[!]variable]

      Ginge vielleicht sowas in der Art:

      Header set Status "503"

      Oder führt das auch nicht zum gewünschten Ziel?

      MfG, Dennis.

      --
      Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
      Crypt::PasswdMD5 jetzt auch in PHP
      Wer die FAQ gelesen hat, ist klüger! ... und weiß wie man Links macht ;-)
      1. 你好 Dennis,

        Ginge vielleicht sowas in der Art:

        Header set Status "503"

        Oder führt das auch nicht zum gewünschten Ziel?

        Das führt zu einem Header „Status: 503“ und nicht zur Status-Zeile „503
        Service temporarily not available“.

        再见,
         克里斯蒂安

        --
        Neues Plugin: mod_asciiart | Opera 8.10 für Gentoo über Portage
        Wenn auf Erden alle das Schoene als schoen erkennen, so ist dadurch schon das Haessliche bestimmt.
        http://wwwtech.de/
    2. Hi Christian!

      Nur mit einer .htaccess-Datei wirst du das nicht hinkriegen. Du wirst auch
      ein CGI-Script bauen müssen, dass immer 503 zurücksendet und dann jeden
      Request darauf umleiten.

      Ok, das Script ist kein großes Problem, wobei ich PHP bevorzuge. Aber wie leite ich alle Requests auf dieses Script um? Und wo lege ich das Script ab, damit es für alle Domains funktioniert?

      Viele Grüße,
      Stefan

      1. Hi Stefan,

        Ok, das Script ist kein großes Problem, wobei ich PHP bevorzuge. Aber wie leite ich alle Requests auf dieses Script um? Und wo lege ich das Script ab, damit es für alle Domains funktioniert?

        Eine .htaccess Datei mit folgendem Inhalt sollte es tun:

        RewriteEngine On  
        RewriteRule !^script.php$ /script.php
        

        Wobei script.php dein PHP Script ist, auf das alle Aufrufe umgeleitet werden sollen und welches im Document Root liegt (ebenso wie die .htaccess)

        MfG, Dennis.

        --
        Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
        Crypt::PasswdMD5 jetzt auch in PHP
        Wenn Sie einen Schweizer Bankier aus dem Fenster springen sehen, springen Sie hinterher. Es gibt bestimmt etwas zu verdienen. (Voltaire)
        1. Hi Stefan,

          Ok, das Script ist kein großes Problem, wobei ich PHP bevorzuge. Aber wie leite ich alle Requests auf dieses Script um? Und wo lege ich das Script ab, damit es für alle Domains funktioniert?

          Wie der Zufall es so wollte, musste ich gestern Abend für ein Update eine Webseite vorübergehend nicht verfügbar machen - mir war also die gleiche Aufgabe gestellt. Gleichzeitig sollte der Zugriff von meiner IP aus mit der ich zu der Zeit im Internet war noch möglich sein. So hab ich es gelöst:

          RewriteCond %{REMOTE_ADDR} !^80.134.58.48$  
          RewriteCond %{REQUEST_URI} !^/error/503.php$  
          RewriteRule .* /error/503.php
          

          Einfach in die .htaccess im Document Root. Das PHP Script 503.php beginnt so:

          <?php  
          header($_SERVER['SERVER_PROTOCOL'] . " 503 Service Unavailable");  
          ?>
          

          Bin mir nicht ganz sicher, ob das so richtig ist, es funktioniert aber (zumindest bei meinen Tests).

          MfG, Dennis.

          --
          Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
          Crypt::PasswdMD5 jetzt auch in PHP
          Die Definition des SelfCodes ist hier zu finden, es gibt auch einen Encoder.