Jak usunąć ochronę hasłem .htaccess z podkatalogu


97

Cała moja witryna została zabezpieczona hasłem, .htaccessale chciałbym ujawnić jeden z podkatalogów, aby można go było przeglądać bez hasła.

Jak mogę wyłączyć ochronę hasłem htaccess dla podkatalogu? Dokładnie jaka jest .htaccessskładnia.

Oto mój .htaccessplik, który jest umieszczony w katalogu głównym mojego ftp.

AuthName „Administracja witryny”
AuthUserFile /dir/.htpasswd
AuthGroupFile / dev / null

AuthName jest bezpieczne
AuthType Basic
wymagaj nazwy użytkownika 1
zamówienie pozwala, odmawia
zezwolić wszystkim

4
To może być lepiej dostosowane do awarii serwera.
zaczyna się

Odpowiedzi:


154

Musisz utworzyć nowy .htaccessplik w wymaganym katalogu i dołączyć do niego Satisfy anydyrektywę w ten sposób, aż do Apache 2.3:

# allows any user to see this directory
Satisfy Any

Składnia zmieniła się w Apache 2.4, ma to ten sam efekt:

Require all granted

7
Mogłem tylko zmusić to do pracy z Allow from allnie Satisfy Any.
Jess Telford

@JessTelford dobre wykorzystanie fragmentu kodu. @RageZ +1 dla odpowiedzi, która zadziałała dla mnie. Czy możesz edytować odpowiedź, aby była super prosta i opublikować ją za pomocą metody fragmentu kodu. Inaczej ktoś będzie musiał pomyślećthanks
Jesse Burcsik

2
@JessTelford Satisfy Anydziała i został nieprawidłowo zapisany jako Satisify Any. Może to jest powód, dla którego to nie zadziałało.
BlueBird

1
Musiałem mieć niezabezpieczony pojedynczy plik (wszystko inne chronione), zrobiony tak samo w sekcji <Files>
Nick

To nie działa dla mnie - nadal otrzymuję modalne hasło z pytaniem o nazwę użytkownika i pwd .. Używając Firefoxa i Windows 7 ... Masz jakiś pomysł?
ItsMeDom

36

Dodając do odpowiedzi RageZ, użyłem tego w dyrektywach serwera:

<Directory /var/www/protected/>
     AuthType Basic
     AuthName "Production"
     AuthUserFile /path/to/.htpasswd
     Require valid-user
</Directory>

<Directory /var/www/protected/unprotected>
     Satisfy Any
</Directory>

Niesamowite. Dzięki RageZ!


9

Po prostu utwórz nowy .htaccessw wybranym podkatalogu za pomocą tej dyrektywy:

Allow from all

Możesz ograniczyć swój adres IP tylko za pomocą:

Allow from x.x.x.x

Zobacz: http://httpd.apache.org/docs/current/mod/mod_access_compat.html


Zadziałało, kiedy wstawiłem „Wymagaj wszystkiego, co zostało przyznane” zamiast „Pozwól wszystkim” i „Spełnij wszystko”. Te dwie nie działały dla mnie. Jestem na Apache 2.4.
endo64

1

Musisz dodać kolejny plik .htaccess do podkatalogu, który zastępuje uwierzytelnianie. .htaccess przechodzi kaskadowo w górę, tj. będzie szukał w bieżącym folderze, a następnie przejdzie do wyższego poziomu i tak dalej.


4
czy znasz składnię? Rozumiem koncepcję, ale nie wiem, jak ją wdrożyć.
justinl

Jeśli chcesz usunąć bieżący i nie używać żadnych uprawnień, po prostu zastąp go pustym plikiem o nazwie .htaccess
Gaʀʀʏ

3
@Garry to nie jest sposób kaskadowania .htaccess, musisz jawnie nadpisać opcje.
William Denniss

1

Oto sposób na zezwolenie na podkatalog „foo” poprzez podstawowe uwierzytelnianie z głównego pliku .htaccess w witrynie:

AuthType Basic
AuthName "Password Required"
AuthUserFile /dir/.htpasswd
Require expr %{REQUEST_URI} =~ m#^/foo/#
Require valid-user

Uwaga: działa to w Apache 2.4. Nie potwierdziłem dla wcześniejszych wersji.


0

Jeśli chcesz zapobiec uwierzytelnianiu htaccess przez określone directoty, możesz użyć następującego kodu w swoim pliku htaccess u góry.

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

Ponadto, jeśli chcesz zapobiec tworzeniu wielu katalogów, dodaj

SetEnvIf Request_URI "(/DIRECTORY_NAME/)$" allow

tyle razy ile katalogów chcesz usunąć z zapobiegania htaccess.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.