Heizer: httpd.conf & AllowOverride

Liebes Forum

Ich versuche seit gestern, .htaccess Dateien mit Apache auf SuSE Linux 7.2 zu laufen zu bekommen, und habe in der /etc/httpd/httpd.conf ALLE "AllowOverride" auf All gesetzt und bekomme trotzdem noch einen "Internat Server Error" (500) wenn ich eine Datei aus dem Verzeichnis aufrufen möchte. Das httpd error.log schreibt:

[alert][client 127.0.0.1] <pfad>/.htaccess : Options not allowed here

die .htaccess Datei sieht folgendermaßen aus:

Option -Idexes

Wie gesagt habe ich ALLE "allowOverride" Einträge auf All gesetzt, auch die zwischen <Directory /></Directory>, und ich weiß nicht, woran es jetzt noch leigen kann. Laut apache-Dokumentation wird diese Eigenschaft doch nur durch "allowOverride" festgelegt.

Wo liegt mein Fehler?

Vielen Dank

Heizer

  1. Liebes Forum

    HAllo,

    die .htaccess Datei sieht folgendermaßen aus:

    Option -Idexes

    <Directory /www/meindocumentroot>
    Options -Indexes //bewirkt wenn keine mit DirectoryIndex festgelegte datei gefunden wird, eine liste der datein angezeigt wird, bzw bei -Indexes ein 403 Forbidden wenn keine index datei gefunden wird.
    AllowOverride All // erlaubt alle commands in einer .htaccess die auch in httpd.conf stehen (very evil)
    </Directory>

    lg
    Ludwig

    1. Liebes Forum
      HAllo,

      und Gruß zurück

      die .htaccess Datei sieht folgendermaßen aus:

      Option -Idexes

      <Directory /www/meindocumentroot>
      Options -Indexes //bewirkt wenn keine mit DirectoryIndex festgelegte datei gefunden wird, eine liste der datein angezeigt wird, bzw bei -Indexes ein 403 Forbidden wenn keine index datei gefunden wird.
      AllowOverride All // erlaubt alle commands in einer .htaccess die auch in httpd.conf stehen (very evil)
      </Directory>

      soweit sogut, was die einzelnen Angaben bedeuten, kann ich ja in SelfHTML nachlesen, aber warum sie nicht funktionieren, weiß ich nicht. ich poste hier mal den entsprechenden Teil meiner httpd.conf (ohne die Kommentare):

      <httpd.conf>

      DocumentRoot "/usr/local/httpd/htdocs"

      <Directory />
          AuthUserFile  /etc/httpd/passwd
          AuthGroupFile /etc/httpd/group

      Options -FollowSymLinks +Multiviews
          AllowOverride All

      </Directory>
      <Directory "/usr/local/httpd/htdocs">

      Options Indexes -FollowSymLinks +Includes MultiViews
          AllowOverride All

      Order allow,deny
          Allow from all

      <IfModule mod_dav.c>
              DAV Off
              </IfModule>

      <Files /usr/local/httpd/htdocs/index.htm*>
              Options -FollowSymLinks +Includes +MultiViews
      </Files>

      <Files test.php3>
       Order deny,allow
              deny from all
              allow from localhost
      </Files>

      </Directory>

      </httpd.conf>

      Es sollten doch nun für alle Dateien, die unterhalb von <directory /> liegen, das "allowOveride all" gelten, oder? Gibt es da einschränkungen mit Symlinks o.ä.? Ich bin wirklich überfragt

      lg
      Ludwig

      1. <Directory "/usr/local/httpd/htdocs">

        Options Indexes -FollowSymLinks +Includes MultiViews
            AllowOverride All

        Order allow,deny
            Allow from all

        [...]

        </Directory>

        Es sollten doch nun für alle Dateien, die unterhalb von <directory /> liegen, das "allowOveride all" gelten, oder?

        stimmt.

        Gibt es da einschränkungen mit Symlinks o.ä.? Ich bin wirklich überfragt

        ja gibt es, du hast ja oben in den Options -FollowSymLinks definiert, ändere das mal auf +FlollowSymLinks.

        btw. du weißt schon das der apache neugestartet werden muss wenn du das config file änderst ? :)

        lg
        Ludwig

      2. hi,

        wir hatten eine vergleichbare Fragestellung erst vor kurzem.

        DocumentRoot "/usr/local/httpd/htdocs"
        <Directory />
            AuthUserFile  /etc/httpd/passwd
            AuthGroupFile /etc/httpd/group
            Options -FollowSymLinks +Multiviews
            AllowOverride All
        </Directory>

        Nach meiner Erfahrung fährst du hier besser, wenn der erste - unspezifizierte - Directory-Container so aussieht:
        <Directory />
          AllowOverride None
        </Directory>
        Das ist zunächst nichts anderes als die "grundsätzliche" Festlegung für Directories, sofern du sie im folgenden nicht individuell bestimmst.

        <Directory "/usr/local/httpd/htdocs">
            Options Indexes -FollowSymLinks +Includes MultiViews
            AllowOverride All
            Order allow,deny
            Allow from all
        <IfModule mod_dav.c>
                DAV Off
        </IfModule>
        <Files /usr/local/httpd/htdocs/index.htm*>
                Options -FollowSymLinks +Includes +MultiViews
        </Files>
        <Files test.php3>
        Order deny,allow
                deny from all
                allow from localhost
        </Files>
        </Directory>

        Es sollten doch nun für alle Dateien, die unterhalb von <directory /> liegen, das "allowOveride all" gelten, oder?

        Nein. Das gilt nur für Dateien, die in /usr/local/httpd/htdocs liegen.

        Gibt es da einschränkungen mit Symlinks o.ä.? Ich bin wirklich überfragt

        Nicht prinzipiell. Aber du hast selber solche Einschränkungen bereits vorgenommen (übrigens nicht ganz logisch), indem du geschrieben hast: -FollowSymLinks.

        Christoph S.

        1. Moin moin!

          Options Indexes -FollowSymLinks +Includes MultiViews

          Diese Zeile macht keinen Sinn. Entweder Du legst direkt eine Reihe von Optionen fest, indem Du kein +/- vor die Woerter schreibst. Oder Du schaltest einzelne Optionen mit +/- relativ zu den vorher gueltigen Optionen ein oder aus. Aber so einen Mischmasch da gibt's nicht.

          Es sollten doch nun für alle Dateien, die unterhalb von <directory /> liegen, das "allowOveride all" gelten, oder?
          Nein. Das gilt nur für Dateien, die in /usr/local/httpd/htdocs liegen.

          Haeh? Wieso das denn?

          So long

          --
          Scientists say there are over 3,000 spiders for every human being on earth. Does anybody want mine? I certainly don't.
              -- Chuck Bonner

          1. Options Indexes -FollowSymLinks +Includes MultiViews
            Diese Zeile macht keinen Sinn. Entweder Du legst direkt
            eine Reihe von Optionen fest, indem Du kein +/- vor die
            Woerter schreibst. Oder Du schaltest einzelne Optionen
            mit +/- relativ zu den vorher gueltigen Optionen ein
            oder aus. Aber so einen Mischmasch da gibt's nicht.

            <cite>Normally, if multiple Options could apply to a directory, then the most specific one is taken complete; the options are not merged. However if all the options on the Options directive are preceded by a + or - symbol, the options are merged. Any options preceded by a + are added to the options currently in force, and any options preceded by a - are removed from the options currently in force.</cite>

            (http://httpd.apache.org/docs/mod/core.html#options)

          2. hallo Calo,

            Options Indexes -FollowSymLinks +Includes MultiViews
            Diese Zeile macht keinen Sinn

            Da hast du recht, wenn man es _ausschließlich_ auf das gepostete Beispiel bezieht. Es mag Konfigurationen geben, in denen so eine Zeile durchaus Sinn machen kann

            Es sollten doch nun für alle Dateien, die unterhalb von <directory /> liegen, das "allowOveride all" gelten, oder?
            Nein. Das gilt nur für Dateien, die in /usr/local/httpd/htdocs liegen.
            Haeh? Wieso das denn?

            Erschließt sich dir aus dem Gesamtkontext des Ausgangspostings, das leider durch die Art, in der es in den Antworten zitiert wurde, bissel sher "zerschnitten" worden ist

            Grüße aus Berlin

            Christoph S.

            1. Moin!

              Options Indexes -FollowSymLinks +Includes MultiViews
              Diese Zeile macht keinen Sinn
              Da hast du recht, wenn man es _ausschließlich_ auf das gepostete Beispiel bezieht. Es mag Konfigurationen geben, in denen so eine Zeile durchaus Sinn machen kann

              In welchem Beispiel macht es denn Deiner Meinung nach Sinn?
              Laut dem Zitat vom Linken Setzer ist die Zeile gleichbedeutend mit
                Options Indexes FollowSymLinks Includes MultiViews
              Nun gut, illegal ist der Mischmasch also nicht, aber sinnvoll ist er trotzdem nicht.

              Es sollten doch nun für alle Dateien, die unterhalb von <directory /> liegen, das "allowOveride all" gelten, oder?
              Nein. Das gilt nur für Dateien, die in /usr/local/httpd/htdocs liegen.
              Haeh? Wieso das denn?
              Erschließt sich dir aus dem Gesamtkontext des Ausgangspostings

              Noe, tut's nicht. Der Heizer hat AllowOverride All im <Directory />-Container gesetzt, also gilt es fuer den gesamten Dateibaum, solange es nicht in einem Teilbaum wieder aufgehoben wird. Wurde es ja auch nicht, nur noch mal fuer /usr/local/httpd/htdocs wiederholt. Also was ist nun die explizite Begruendung fuer Deine Behauptung?

              So long

              --
              Scientists say there are over 3,000 spiders for every human being on earth. Does anybody want mine? I certainly don't.
                  -- Chuck Bonner

  2. Hi Heizer,

    [alert][client 127.0.0.1] <pfad>/.htaccess : Options
    not allowed here
    Wo liegt mein Fehler?

    Du versuchst, _innerhalb_ einer .htaccess-Datei die Direktive "Options" zu verwenden. Aber für den Gültigkeitsbereich _dieses_ Pfades ist offenbar _nicht_ "AllowOverride Options" gesetzt.

    Vielleicht fehlt in Deiner httpd.conf die passende <Directory>-Direktive für diesen Baum, und Dein Verzeichnisbaum wird einfach von _keiner_ der bereits existierenden AllowOverride-Direktiven abgedeckt?

    Viele Grüße
          Michael

  3. Dank an alle, die mir geholfen haben, ich habs geschafft