hawkmaster: Apache Fragen, .htaccess, Redirect Umleitungsschleife?

Hallo zusammen,

Mir sind ein paar Einstellungen für den Apache 2.2 (unter Windows XP) nicht klar.

1. Man kann ja separate Conf Dateien von der httpd.conf includieren.
Include conf/extra/httpd-default.conf

Ein Trainer hat folgendes behauptet.
Der Apache würde die "httpd-default.conf" IMMER includieren und die Standardwerte auslesen auch wenn diese in der httpd.conf nicht eingebunden wird, also;

Include conf/extra/httpd-default.conf

Er meinte immer wenn Konfig Dateien den Zusatz "-default" enthalten, werden sie gelesen. Erst wenn man in der "httpd-default.conf" Einstellungen verändert, müßte man sie in der httpd.conf includieren.

Mir kommt das etwas seltsam vor bzw. kann es fast nicht glauben.
Kann mir das jemand bestätigen oder nähere Infos geben?

2. Werden .htaccess Dateien vom Apache immer verstanden oder ausgewertet?
Es gibt ja die Anweisung:

AccessFileName .htaccess

Bei mir werden aber die .htaccess Dateien erkannt und ausgewertet wenn ich die Anweisung auskommentiere wie;

AccessFileName .htaccess

3. Redirect
In einem Buch fand ich ein Besipiel wie man eine Seite kurzfristig wegen Wartungsarbeiten sperren kann bzw. das eine Wartungsseite erscheint.

Redirect temp / http://localhost/wartung.html

Wenn ich dies versuche und z.b.
http://localhost eingebe, bringt mit Firefox ständig einen Fehler

"Umleitungsschleife

Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann."

Warum kommt diese Meldung?

vielen Dank und viele Grüße
hawk

  1. Guten Tag,

    1. Man kann ja separate Conf Dateien von der httpd.conf includieren.
      Include conf/extra/httpd-default.conf

    Ein Trainer hat folgendes behauptet.
    Der Apache würde die "httpd-default.conf" IMMER includieren und die
    Standardwerte auslesen auch wenn diese in der httpd.conf nicht
    eingebunden wird, also;

    Include conf/extra/httpd-default.conf

    Er meinte immer wenn Konfig Dateien den Zusatz "-default" enthalten,
    werden sie gelesen. Erst wenn man in der "httpd-default.conf"
    Einstellungen verändert, müßte man sie in der httpd.conf includieren.

    Das konnte ich nicht nachvollziehen, weder im Manual noch im Test.

    1. Werden .htaccess Dateien vom Apache immer verstanden oder ausgewertet?
      Es gibt ja die Anweisung:

    AccessFileName .htaccess

    Bei mir werden aber die .htaccess Dateien erkannt und ausgewertet wenn ich die Anweisung auskommentiere wie;

    AccessFileName .htaccess

    Das ergibt sich daraus, dass der Defaultwert AccessFileNames .htaccess ist. Wird kein expliziter Wert gesetzt, gilt der Defaultwert.

    1. Redirect
      In einem Buch fand ich ein Besipiel wie man eine Seite kurzfristig wegen Wartungsarbeiten sperren kann bzw. das eine Wartungsseite erscheint.

    Redirect temp / http://localhost/wartung.html

    Wenn ich dies versuche und z.b.
    http://localhost eingebe, bringt mit Firefox ständig einen Fehler

    "Umleitungsschleife

    Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann."

    Warum kommt diese Meldung?

    Wie sieht deine restliche Konfiguration aus?

    Gruß
    Christoph Jeschke

    --
    Zend Certified Engineer
    Certified Urchin Admin
    1. Hallo Christoph,

      vielen Dank für deine Antworten und Hilfe.

      Das konnte ich nicht nachvollziehen, weder im Manual noch im Test.

      Dann bin ich froh. Ich nämlich auch nicht. Ich kann mir nicht vorstellen das der Apache alle Konfigurationsdateien nach dem String "-default" parst.
      Ich habe auch in keinem Manual einen Hinweis darauf gefunden.

      Das ergibt sich daraus, dass der Defaultwert AccessFileNames .htaccess ist. Wird kein expliziter Wert gesetzt, gilt der Defaultwert.

      Das heisst also das es quasi in den Apache "eingebaut" ist das Default mäßig immer .htaccess genommen wird?
      Ist das dann eigentlich auch bei anderen Dingen so, wie etwa:

      MaxKeepAliveRequests 100
      Timeout 300
      UseCanonicalName Off

      usw. ?

      Wie sieht deine restliche Konfiguration aus?

      Eigentlich ist es eine XAMPP Standardinstallation.

      DocumentRoot "C:/Programme/WebSrv/htdocs"

      <Directory />
          Options None
          AllowOverride None
          Order deny,allow
          Deny from all
      </Directory>

      Redirect temp / http://localhost/wartung.html

      <Directory "C:/Programme/WebSrv/htdocs">
      MultiViews
      Options -Indexes Includes ExecCGI
      AllowOverride All
          Order allow,deny
          Allow from all

      </Directory>

      Oder meinst du was besonderes?

      vielen Dank und viele Grüße
      hawk

      1. Yerf!

        Dann bin ich froh. Ich nämlich auch nicht. Ich kann mir nicht vorstellen das der Apache alle Konfigurationsdateien nach dem String "-default" parst.
        Ich habe auch in keinem Manual einen Hinweis darauf gefunden.

        Ich denke mal, dass der Eindruck dadurch entstanden ist, weil die Einstellungen der "-default" Configs mit denen übereinstimmen, die gelten, wenn keine Config geparst wird.

        Dies dürfte dann wohl auch deine 2. Frage klären, oder?

        Gruß,

        Harlequin

        --
        <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
        1. Hallo Harlequin,

          Danke auch dir für die Hilfe.

          Ich denke mal, dass der Eindruck dadurch entstanden ist, weil die Einstellungen der "-default" Configs mit denen übereinstimmen, die gelten, wenn keine Config geparst wird.

          Dies dürfte dann wohl auch deine 2. Frage klären, oder?

          Ja ich glaube auch so langsam das dies so gemeint war das immer die Default Werte genommen werden und nur wenn sie davon abweichen man die "httpd-default.conf" includieren sollte.

          vielen Dank und viele Grüße
          hawk

      2. Guten Tag,

        Das heisst also das es quasi in den Apache "eingebaut" ist das Default
        mäßig immer .htaccess genommen wird?

        Genau.

        Ist das dann eigentlich auch bei anderen Dingen so, wie etwa:

        MaxKeepAliveRequests 100
        Timeout 300
        UseCanonicalName Off

        Schau ins Manual. Dort wird ein eventuell vorhandener Default-Wert angegeben.

        Gruß
        Christoph Jeschke

        --
        Zend Certified Engineer
        Certified Urchin Admin
    2. Hallo nochmals,

      nochmals wegen dem Redirect Problem bzw. der Umleitungschleife.

      Kann es sein das es einfach so garnicht gehen kann?
      Redirect temp / http://localhost/wartung.html

      Ich leite dann ja alle Seiten von htdocs wiederum auf den eigenen localhost um.
      Kann es sein, das ein Redirect immer nur auf fremde URLs geht?

      vielen Dank und viele Grüße
      hawk

      1. Guten Tag,

        Kann es sein das es einfach so garnicht gehen kann?
        Redirect temp / http://localhost/wartung.html

        Doch, die Syntax ist gültig.

        Ich leite dann ja alle Seiten von htdocs wiederum auf den eigenen localhost
        um.
        Kann es sein, das ein Redirect immer nur auf fremde URLs geht?

        Nein. Das ist problemlos möglich. Du kannst sogar eine Endlosschleife produzieren, in dem du auf die gleiche Ressource weiterleitest.

        In deinem Falle leitet der Apache immer dann auf /wartung.html weiter, wenn irgendeine Ressource unter / aufgerufen wird. Du solltest als RediretMatch verwenden, wenn du nur / weiterleiten willst, bzw. mod_rewrite, wenn du alle außer /wartung.html auf /wartung.html weiterleiten möchtest.

        Gruß
        Christoph Jeschke

        --
        Zend Certified Engineer
        Certified Urchin Admin
        1. Hallo Christoph,

          In deinem Falle leitet der Apache immer dann auf /wartung.html weiter, wenn irgendeine Ressource unter / aufgerufen wird. Du solltest als RediretMatch verwenden, wenn du nur / weiterleiten willst, bzw. mod_rewrite, wenn du alle außer /wartung.html auf /wartung.html weiterleiten möchtest.

          Ok, aber warum klappt es dann mit
          Redirect temp / http://localhost/wartung.html
          nicht?

          Wenn ich im Browser
          http://localhost/
          eingebe, kommt sofort die Meldung "Weiterleitungsschleife" und die URL wird.
          http://localhost/wartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.html

          Und die eigentliche wartung.html wird nicht angezeigt.

          vielen Dank und viele Grüße
          hawk

          1. Guten Tag,

            Ok, aber warum klappt es dann mit
            Redirect temp / http://localhost/wartung.html
            nicht?

            Weil ein Match auf / eben auch auf /wartung.html passt. Der Client wird immer wieder weitergeleitet.

            Gruß
            Christoph Jeschke

            --
            Zend Certified Engineer
            Certified Urchin Admin
            1. Hallo Christoph,

              Weil ein Match auf / eben auch auf /wartung.html passt. Der Client wird immer wieder weitergeleitet.

              das heisst also das es bei diesem Beispiel mit dem Wartungshinweis so lokal auf dem gleichen Server garnicht geht bzw. keinen Sinn mit Redirect macht?

              Wäre hier das "mod_rewrite" angebrachter?

              vielen Dank und viele Grüße
              hawk

              1. Guten Tag,

                das heisst also das es bei diesem Beispiel mit dem Wartungshinweis so lokal auf
                dem gleichen Server garnicht geht bzw. keinen Sinn mit Redirect macht?

                Es funktioniert, denn die Weiterleitung ist gültig, aber offensichtlich sinnlos.

                Wäre hier das "mod_rewrite" angebrachter?

                Genau. Du lässt den Server nur dann weiterleiten, wenn nicht /wartung.html aufgerufen wird. So vermeidest du Endlosschleifen.

                Gruß
                Christoph Jeschke

                --
                Zend Certified Engineer
                Certified Urchin Admin
              2. das heisst also das es bei diesem Beispiel mit dem Wartungshinweis so lokal auf dem gleichen Server garnicht geht bzw. keinen Sinn mit Redirect macht?

                Wäre hier das "mod_rewrite" angebrachter?

                Für solch simple Sachen genügt auch RedirectMatch:

                RedirectMatch 302 ^/(?!wartung.htm) http://example.com/wartung.htm

                Redirect wäre in diesem Beispiel übrigens auch ohne Endlosschleife nicht ganz richtig, bei einer Anfrage von http://example.com/foo/bar dürfte bei

                Redirect / http://test.com/xy.htm

                dann nämlich daraus http://test.com/xy.htmfoo/bar werden – was sicher nicht dem gewünschten Ergebnis entspricht.

                Options -Indexes Includes ExecCGI

                +/- und nicht- +/- Optionen sollten nie gemischt werden. Entweder besteht deine Zeile nur aus +/- Optionen oder eben nur aus solchen ohne +/-.