Der kennwortgeschützte Unterordner fordert das Kennwort zweimal auf und löst dann den Fehler 404 aus

Nov 11 2020

Mein Problem:

Meine Website besteht aus einigen Dateien im Stammordner sowie einem passwortgeschützten Unterordner, der in meinem htaccess festgelegt ist. Wenn ich versuche, auf den Unterordner zuzugreifen, werde ich aufgefordert, das Kennwort einzugeben, wie es sollte. Es fordert mich jedoch zweimal zur Eingabe des Kennworts auf, und nach zweimaliger Eingabe des richtigen Kennworts wird ein 404-Fehler ausgegeben. Wenn ich ein falsches Passwort eingebe, wird immer wieder nach dem Passwort gefragt.

Nach der Eingabe des Kennworts bin ich tatsächlich angemeldet, da ich darauf zugreifen kann, wenn ich versuche, auf einen bestimmten Teil dieses Unterordners (z. B. myurl.com/subfolder/index.php) zuzugreifen. Aber offensichtlich sollte die Site nicht zuerst einen 404-Fehler auslösen.

Was ich versucht habe:

Ich habe gesehen, dass andere Leute ein ähnliches Problem haben, was passwortgeschützte Unterordner und 404-Fehler betrifft . Mein Problem ist jedoch etwas anders, da ich tatsächlich ein Passwort eingeben kann. Daher hat die übliche Lösung des Hinzufügens ErrorDocument 401 "Authorisation Required"das Problem nicht gelöst.

Code:

Dies ist der Zugriff für den Stammordner:

#Redirects to the https version of site
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] ## Removes php extensions RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.php [NC,L]

#Allow password for subfolder
ErrorDocument 401 "Authorisation Required"

Und das ist der Grund für den Unterordner:

#Password for subfolder
AuthType Basic
AuthName "Password Protected Area"
AuthUserFile myurl/mysubfolder/.htpasswd
Require valid-user

Jede Hilfe wird sehr geschätzt!

Antworten

MrWhite Nov 11 2020 at 23:36
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

Wenn Sie das /subfolder Verzeichnis anfordern (und sobald Sie authentifiziert sind .htaccess), fügen die obigen Anweisungen mod_rewrite (in der Stammdatei) eine .phpErweiterung hinzu, d. H. /subfolder/.phpund führen zu einem 404.

(Sie sind sich nicht sicher, warum Sie zweimal zur Eingabe des Kennworts aufgefordert werden, es sei denn, dies hängt auch mit dem oben beschriebenen Umschreiben zusammen oder möglicherweise mit der Art und Weise, wie der 404 ausgelöst wird. Haben Sie ein benutzerdefiniertes 404-Dokument definiert? Haben Sie andere .htaccessAnweisungen? )

Sie müssen entweder:

  • Fügen Sie eine zusätzliche Bedingung in die obige Regel ein, um Verzeichnisse auszuschließen. Zum Beispiel:

    RewriteCond %{REQUEST_FILENAME} !-d
    
  • Oder /subfolder/.htaccessdeaktivieren Sie in der Datei die Rewrite-Engine, damit die Anweisungen mod_rewrite in der übergeordneten .htaccessDatei nicht verarbeitet werden. Dies ist zwar möglicherweise nicht wünschenswert.

    RewriteEngine Off