Mit Modrewrite im .htaccess ist Verzeichnis mit Verzeichnisschutz nicht aufrufbar

  • Hallo an alle,

    ich habe ein Problem das scheinbar sehr viele haben, jedoch fand ich im Internet nirgends eine Lösung (die anderen scheinbar auch nicht):

    Ich habe im Root-Verzeichnis ein modrewrite (in einer .htaccess) das Wordpress automatisch installierte. Gleichzeitig schütze ich ein Unterverzeichniss mit einem Verzeichnisschutz (über ein zweites .htaccess das dort liegt).

    Das Problem:
    Der Verzeichnisschutz funktioniert zusammen mit dem modrewrite nicht. Das geschützte Verzeichnis ist nicht mehr auffindbar. Eine Paßwortabfrage erscheint also erst garnicht. Stattdessen kommt die Meldung:
    "Apologies, but we were unable to find what you were looking for."

    Lösche ich jedoch die .htaccess mit dem modrewrite aus dem Rootverzeichnis dann klappt der Verzeichnisschutz wieder.

    Das Problem taucht in Varianten immer wieder im Internet auf aber eine Lösung scheint niemand zu kennen. Vielleicht finde ich hier schlaue Köpfe die wissen woran es liegt. Ich selbst kenne mich diesbezüglich garnicht aus. Ich möchte lediglich die modrewrite-Funktion um meine wordpress-Verzeichnisse nach eigenen Wünschen benennen zu können und aber gleichzeitig ein wichtiges Verzeichnis schützen.

    Hier die .htaccess mit dem modrewrite (liegt im root):

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>

    Hier die .htaccess mit dem Verzeichnisschutz (liegt im Unterverzeichnis):

    #-----BEGIN KONTENT-KENNWORTSCHUTZ-2.0-b1c4fb5bd3026ceeb53270kdoldöokf
    AuthName "PASSWORD REQUIRED"
    AuthType Basic
    Require user Blogwacht
    #-----END KONTENT-KENNWORTSCHUTZ-2.0-b1c4fb5bd3026ceeb53270kdoldöokf

    Würde mich sehr freuen wenn Ihr mir helfen könntet.

    Im Voraus vielen Dank !

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Die .htaccess-Datei von WordPress leitet alle Anfragen, die nicht auf eine physisch existente Datei oder Ordner führen, zur index.php von WordPress um. Der Verzeichnisschutz sollte also eigentlich funktionieren, solange Du eine Datei oder einen Ordner aufrufst, die tatsächlich existieren.

    Wenn im Unterordner eine ähnliche Konstruktion wie WordPress liegt, welche Teile der URL als Parameter auswertet, musst Du ggf. in der oberen .htaccess alle Anfragen auf das Verzeichnis von der WP-Prüfung ausnehmen. Das könnte in etwa so aussehen:

    Apache Configuration
    #  BEGIN WordPress
    <IfModule [URL="http://forum.wordpress-deutschland.org/lexikon/?do=showentry&item=mod_rewrite"]mod_rewrite[/URL].c>
    RewriteEngine  On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME}   !^/verzeichnisname/*
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond  %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php  [L]
    </IfModule>
    # END WordPress

    Das ist jetzt aber ungetestet, muss also nicht zwangsläufig stimmen. "verzeichnisname" wäre der Pfad zum Unterverzeichnis. Die Ergänzung müsstest Du nach jedem Speichern der Permalinks wieder einbauen.

  • Hallo,
    zunächst danke für Deine Antwort.

    Zitat

    Die .htaccess-Datei von WordPress leitet alle Anfragen, die nicht auf eine physisch existente Datei oder Ordner führen, zur index.php von WordPress um. Der Verzeichnisschutz sollte also eigentlich funktionieren, solange Du eine Datei oder einen Ordner aufrufst, die tatsächlich existieren.

    Es ist ein Ordner der tatsächlich existiert.

    Zitat

    Wenn im Unterordner eine ähnliche Konstruktion wie WordPress liegt, welche Teile der URL als Parameter auswertet, musst Du ggf. in der oberen .htaccess alle Anfragen auf das Verzeichnis von der WP-Prüfung ausnehmen. Das könnte in etwa so aussehen:



    Äh, das habe ich nicht verstanden "ähnliche Konstruktion wie Wordpress".

    Auch das habe ich als Laie nicht verstanden. Die einzige Zeile die sich ändert im Vergleich zu meiner Datei ist die 5.Zeile. Aber ich verstehe das nicht.
    Und ausserdem: ich muß die dann nach jedem neuen Permalink wieder einfügen ? Das wäre ja ein viel zu großer Aufwand und ein Unsicherheitsfaktor. Oder habe ich da was falsch verstanden ?

  • Ok, also nochmal: Wenn Du aufrufst /unterordner/datei-die-existiert, sollte das auch mit der jetzigen Konstruktion schon gehen. Genauso für /unterordner/noch-ein-ordner-der-existiert oder direkt /unterordner. Was nicht geht ist /unterordner/datei-die-existiert/url-parameter, wo dann der URL-Parameter ähnlich wie die Permalinks von WordPress ausgewertet wird, z.B. über eine weitere .htaccess. Aus Sicht von Apache ist das dann keine existierende Datei und der Aufruf geht an WordPress weiter, wo er im 404 mündet (und ich nehme mal an, dass eine 404-Fehler von WordPress das ist, was Du ursprünglich beschrieben hast).

    Oben vorgeschlagene Lösung sorgt dafür, dass die WP-Rewrite-Regel nicht angewendet wird, wenn der Aufruf in das zu schützende Unterverzeichnis führt. Das würde WP überschreiben, wenn Du die Permalink-Einstellungen neu abspeicherst, was man ja aber normalerweise nicht so oft macht. Mit etwas mehr Kenntnis der .htaccess-Regeln kann man das auch sicher so schreiben, dass man es in der .htacces außerhalb des WP-Blocks angeben kann,dann lässt WP das auch in Ruhe.

    Und was ich vermutlich gleich hätte fragen sollen: Du versuchst jetzt aber nicht, einen Teil von WP damit zu schützen, also z.B. eine Kategorie oder so, oder? Es geht um externe Dateien, die mit WP nichts zu tun haben und nur zufällig in einem Unterordner innerhalb von WP liegen?

  • Zitat

    Ok, also nochmal: Wenn Du aufrufst /unterordner/datei-die-existiert, sollte das auch mit der jetzigen Konstruktion schon gehen.

    Genau das funktioniert nicht ! Das ist es ja was mich wundert. Es ist ein real existierender Unterordner der durch .htaccess geschützt dann nicht mehr zu finden ist.

    Zitat

    Was nicht geht ist /unterordner/datei-die-existiert/url-parameter, wo dann der URL-Parameter ähnlich wie die Permalinks von WordPress ausgewertet wird, z.B. über eine weitere .htaccess. Aus Sicht von Apache ist das dann keine existierende Datei und der Aufruf geht an WordPress weiter

    Und ich benutze beim Aufruf auch keine Parameter.

    Zitat

    (und ich nehme mal an, dass eine 404-Fehler von WordPress das ist, was Du ursprünglich beschrieben hast).

    Ich vermute - wie Du - das es sich um eine Fehlermeldung direkt von Wordpress handelt, evtl. ein 404, den Wordpress intern anders beschreibt. Aber was auch immer, dieser Fehler dürfte garnicht kommen.

    Zitat

    Und was ich vermutlich gleich hätte fragen sollen: Du versuchst jetzt aber nicht, einen Teil von WP damit zu schützen, also z.B. eine Kategorie oder so, oder? Es geht um externe Dateien, die mit WP nichts zu tun haben und nur zufällig in einem Unterordner innerhalb von WP liegen?

    Im Wesentlichen ist es so wie Du sagtst, ein Ordner der nichts mit dem eigentlich Wordpress zu tun hat. Es ist der Ordner in dem mein "mysqldumper" liegt. Aber es muß ja eigentlich auch eine Möglichkeit geben, um mal einen (realen existierenden !) Wordpress-Unterordner schützen zu können, auch wenn modrewrite aktiviert ist. (das ich nicht permalinks aufrufen oder Parameter übergeben kann habe ich verstanden )

    Hast Du (oder jemand anderes) noch eine Idee warum es zu einem Konflikt kommt ?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!