Ich habe meine gesamte Website mit .htaccess durch ein Kennwort geschützt. Ich möchte jedoch eines der Unterverzeichnisse freigeben, sodass es ohne Kennwort angezeigt werden kann.
Wie kann ich den htaccess-Passwortschutz für ein Unterverzeichnis deaktivieren? Was genau ist die .htaccess-Syntax.
Hier ist meine .htaccess-Datei, die sich im Stammverzeichnis meines ftp befindet
AuthName "Site-Verwaltung" AuthUserFile /dir/.htpasswd AuthGroupFile /dev/null AuthName sicher AuthType Basic verweigern von allen zulassen
Sie müssen eine neue .htaccess
-Datei im erforderlichen Verzeichnis erstellen und die Satisfy any
-Direktive wie folgt in die Datei aufnehmen.
# allows any user to see this directory
Satisfy Any
Die Syntax wurde in Apache 2.4 geändert. Dies hat den gleichen Effekt:
Require all granted
Zu RageZs Antwort habe ich dies in den Server-Direktiven verwendet:
<Directory /var/www/protected/>
AuthType Basic
AuthName "Production"
AuthUserFile /path/to/.htpasswd
Require valid-user
</Directory>
<Directory /var/www/protected/unprotected>
Satisfy Any
</Directory>
Genial. Danke RageZ!
Erstellen Sie einfach einen neuen .htaccess
im gewünschten Unterverzeichnis mit dieser Anweisung:
Allow from all
Sie können Ihre IP nur mit einschränken:
Allow from x.x.x.x
Siehe: http://httpd.Apache.org/docs/current/mod/mod_access_compat.html
Mit dem folgenden Verfahren können Sie das Unterverzeichnis "foo" über die Standardauthentifizierung aus der .htaccess-Hauptdatei eines Standorts zulassen:
AuthType Basic
AuthName "Password Required"
AuthUserFile /dir/.htpasswd
Require expr %{REQUEST_URI} =~ m#^/foo/#
Require valid-user
Hinweis: Dies funktioniert in Apache 2.4. Ich habe für frühere Versionen nicht bestätigt.
Sie müssen dem Unterverzeichnis eine weitere .htaccess-Datei hinzufügen, die die Authentifizierung überschreibt. .htaccess kaskadiert nach oben, d. h. er sucht im aktuellen Ordner, geht dann eine Ebene höher usw.
Wenn Sie verhindern möchten, dass eine bestimmte Direktive die htaccess-Authentifizierung durchführt, können Sie in Ihrer htaccess-Datei oben folgenden Code verwenden.
AuthType Basic AuthName "Enter Pass" AuthUserFile /home/public_html/.htpasswd /*PATH TO YOUR .htpasswd FILE*/ Require valid-user SetEnvIf Request_URI "(/DIRECTORY_NAME/)$" allow Order allow,deny Allow from env=allow
Auch wenn Sie mehrere Verzeichnisse verhindern möchten, fügen Sie hinzu
SetEnvIf Request_URI "(/DIRECTORY_NAME/)$" allow
wenn Sie so viele Verzeichnisse wie möglich haben, möchten Sie diese aus der Zugriffsverhinderung entfernen.