# Excludeți folderul media din autentificarea de bază
SetEnvIf Request_URI „^/media/*” media
Comanda permite, refuza
Necesită utilizator valid
Permite de la env=media
Deny de la env=!media
Satisface orice
Acest lucru ar fi funcționat, cu excepția faptului că regex este greșit în SetEnvIf
directivă, deci env var mass-media
nu este setat la cerere /media/someimage.jpg
. Îți lipsește un punct înainte de *
cuantificator, adică. ^/media/.*
. Cu toate acestea, puteți elimina pur și simplu următorul *
cu totul, adică. ^/media/
, care este efectiv același (și mai eficient).
The Deny de la env=!media
directiva este de prisos.
Deci, ar trebui să funcționeze următoarele:
# Excludeți folderul media din autentificarea de bază
SetEnvIf Request_URI „^/media/” media
Necesită utilizator valid
Comanda permite, refuza
Permite de la env=media
Satisface orice
CU toate acestea, aceasta utilizează directive Apache 2.2 depreciate. Pe Apache 2.4, puteți face următoarele:
# Excludeți folderul media din autentificarea de bază
SetEnvIf Request_URI „^/media/” media
Necesită utilizator valid
Necesită medii de mediu
The Mod implicit containerul este <RequireAny>
- deci nu trebuie să includeți asta. Deși poți fi explicit dacă vrei:
<RequireAny>
Require valid-user
Require env media
</RequireAny>
Alternativ, puteți înconjura întregul bloc de autorizare într-un <If>
expresie. De exemplu:
# Protejează totul cu parolă, cu excepția subdirectorului „/media/”.
<Dacă „%{REQUEST_URI} !~ m#^/media/#">
AuthType Basic
AuthName „Protejat”
AuthUserFile „/var/www/company/.htpasswd”
Necesită utilizator valid
</Dacă>
Operatorul !~
este o potrivire a expresiei regulate negate.