Htaccess hat Einfluss auf Unterordner trotz individueller (Plesk) Root Ordner

  • Hallo zusammen,


    ich hoffe dass dies die richtige Kategorie ist. Ich habe ein seltsames Verhalten bei meinem Webspace festgestellt.


    Wenn ich eine .htaccess Datei im Root- / Haupt-Ordner des Webspace ablege, hat diese Einfluss auf alle Unterordner.

    Das ist ja soweit erst einmal richtig und entspricht Apache Standard. Aber:

    wenn ich nun für eine Domain einen solchen Unterordner als Root definiere (heißt in der Kontroll-Oberfläche "Dokumentenstamm"),

    dann wird dennoch diese htaccess beachtet. Das habe ich bei noch keinem anderen Server erlebt.


    Muss ich etwas bestimmtes einstellen, dass der Dokumentenstamm auch der tatsächliche Root Ordner ist?


    Hier ein Beispiel meines Problems:


    /httpdocs - hier liegt die .htaccess und eine index.html

    /httpdocs/test - hier liegt eine test.html

    /httpdocs/xyz - hier liegt eine andere Webseite


    Domain webseiteA.tld hat als Dokumentenstamm bzw. Root: /httpdocs

    Domain webseiteB.tld hat als Dokumentenstamm bzw. Root: /httpdocs/xyz


    Rufe ich nun webseiteA.tld auf, dann erhalte ich die index.html unter dem Einfluss der htaccess Datei... das ist soweit korrekt.

    Rufe ich nun webseiteA.tld/test/test.html auf, dann erhalte ich die test.html unter dem Einfluss der htaccess Datei des Eltern- bzw. Root Ordners ... das ist soweit auch korrekt.


    Jetzt das Problem:

    Rufe ich nun webseiteB.tld auf, dann erhalte ich die darin liegende Webseite ... jedoch noch immer unter dem Einfluss der htaccess Datei...

    das ist so natürlich nicht gewünscht, denn die Root für webseiteB.tld beginnt ja normalerweise erst im darüber liegenden Ordner und müsste somit die htaccess ignorieren.


    Vielleicht hatte ja der ein oder andere das selbe Problem und eine Lösung für mich.


    Vielen Dank und viele Grüße


    PS: Ein verschieben der htaccess in andere Ordner oder ändern der ganzen Ordner-Struktur ist nicht gewünscht, da es ja nur ein Workarround und keine Lösung des Problems wäre :P

  • Scheint normales verhalten zu sein hier ein Zitat aus der Doku:


    Zitat

    Further note that httpd must look for .htaccess files in all higher-level directories, in order to have a full complement of directives that it must apply. (See section on how directives are applied.) Thus, if a file is requested out of a directory /www/htdocs/example, httpd must look for the following files:

    Code
    /.htaccess
    /www/.htaccess
    /www/htdocs/.htaccess
    /www/htdocs/example/.htaccess
  • Hallo,


    danke für Deine Antwort.

    Apache scheint es auch richtig zu machen, allerdings befürchte ich einen Fehler in der Plesk Konfiguration.

    Denn bei webseiteB.tld liegt ja in deren Root gar keine htaccess mehr.

    Es scheint so, als würde die Root von Plesk nicht richtig/wirklich gesetzt sondern eine Art "versteckte Weiterleitung" genutzt werden.


    Viele Grüße

  • Ja das ist egal, Apache muss immer in allen übergeordneten Verzeichnissen nachsehen, ob da eine .htaccess liegt und die dann bearbeiten. Ob das ein DocumentRoot Verzeichnis ist, oder nicht, ist dabei egal.

  • Ja das ist egal, Apache muss immer in allen übergeordneten Verzeichnissen nachsehen, ob da eine .htaccess liegt und die dann bearbeiten. Ob das ein DocumentRoot Verzeichnis ist, oder nicht, ist dabei egal.

    Das kann doch nicht uneingeschränkt stimmen. Es sollte sinnvollerweise in allen übergeordneten bis zum Dokumentenstamm gucken.


    Wenn ich in /var oder sogar / eine .htaccess ablege, dann hat die nicht für meine Webseiten zu gelten, deren rootDirs in /var/www/html überhaupt erst anfangen.


    Edit: Ok, Doku-Zitat nicht richtig gelesen... Wundert mich trotzdem :D


    Edit2: OK ist auch nicht so ;)

    Zitat

    (Note that this would only be the case if .htaccessfiles were enabled for /, which is not usually the case.)

    In meinem Beispiel würde das ja bei /var/www/html anfangen (was zwar zufällig dem Dokumentenstamm entsprechen kann aber nicht gleich sein muss). Von daher ist das Ergebnis, dass der TE bekommt in Ordnung.

  • Das kann nicht uneingeschränkt stimmen. Es sollte in allen übergeordneten bis zum Dokumentenstamm gucken.


    Wenn ich in /var oder sogar / eine .htaccess ablege, dann hat die nicht für meine Webseiten zu gelten, deren rootDirs in /var/www/html überhaupt erst anfangen.

    Ich habe aus der Offiziellen Doku zitiert, da wird ja im Beispiel auch die .htaccess in / gesucht und / wird sicher kein DocumentRoot sein.


    EDIT: Ok, aber in seinem Beispiel sind ja htaccess Files auch für das übergeordnete Verzeichnis aktiviert.

  • Ich habe aus der Offiziellen Doku zitiert, da wird ja im Beispiel auch die .htaccess in / gesucht und / wird sicher kein DocumentRoot sein.

    Dein Zitat ist unvollständig.


    Edit2 beachten. Es wird üblicherweise nicht in / gesucht, da die üblichen (Standard-)Konfigurationen .htaccess erst ab dem /var/www/html directory aktivieren.

    Aber ja bis dahin wird "hochgesucht" unabhängig vom Root-Dir

  • Ja, habe ich eingesehen ;), allerdings ist in einem Beispiel ja die .httaccess für das übergeordnete Verzeichnis aktiviert, also wird da auch bei dem anderen VirtualHost nachgeschaut.


    In der Doku steht nichts davon, dass Apache lediglich bis hinauf zum DocumentRoot des Virtual Hosts die .htaccess Dateien berücksichtigt.


    M--


    Was spricht dagegen das Rootverzeichnis der Webseite A in ein Unterverzeichnis unter httpdocs zu legen und dann auf die Webseite B zu verlinken? Dann kannst Du die .htaccess Datei in /httpdocs löschen.

  • Was spricht dagegen das Rootverzeichnis der Webseite A in ein Unterverzeichnis unter httpdocs zu legen und dann auf die Webseite B zu verlinken? Dann kannst Du die .htaccess Datei in /httpdocs löschen.

    Im Grunde könnte ich das machen (und werde es wahrscheinlich auch tun). Momentan habe ich sehr viele Domains leer laufen und lasse sie auf die Root /httpdocs zeigen in welcher eine htaccess mit Deny all liegt. Wenn ich dann ein Projekt habe, lege ich in httpdocs einen Unterordner an und stelle für diese eine Domain dann die Root neu ein. Das hat bis jetzt auch immer geklappt, aber seit meinem Umzug zu Netcup geht das so nicht mehr.


    Lange Rede, kurzer Sinn ;) Ich werde wohl oder übel einmal die Konfiguration von allen Domains auf z.B. /httpdocs/deaktiviert/ zeigen lassen müssen und dort die htaccess speichern.


    Viele Grüße

  • Ich hab da auch nochmal drüber nachgedacht.

    Wird nicht für jede Domain für die ein Root-Verzeichnis bestimmt werden kann, ein eigener vHost angelegt?

    Und wird nicht die <Directory /var/www/...>-Direktive, die das AllowOverride (u.ä.) beinhaltet für jeden vHost angegeben?


    Weil dann müsste doch tatsächlich das so sein wie M-- sich das denkt. Weil aus Sicht des jeweiligen vHosts das "oberste Verzeichnis" für htaccess doch in der vHost-spezifischen Directory-Direktive konfiguriert werden kann :/