Protejez fișierele CSV din acel director. Ele dispar când directiva de autentificare este setată. Apare când îl scot. Vreau să pot măcar să văd fișierele, dar atunci când accesez aceste fișiere, ar oferi un prompt de autentificare.
Când o listă de director este generată folosind mod_autoindex, este emisă o subcerere internă pentru fiecare fișier care apare în lista de director. Când utilizați a <FilesMatch "^(.*).csv$">
container, atunci este procesat și pentru aceste subcereri și, în consecință, este blocată și introducerea acestor fișiere în lista de director.
O alternativă la utilizarea <FilesMatch>
directiva este de a folosi un <If>
expresie și testare împotriva CEREREA
variabila server în schimb. Aceasta este numai atunci de succes cand .csv
fișierele sunt de fapt solicitate de utilizator și nu atunci când navighează în listarea directoarelor.
De exemplu:
# Listările de directoare (mod_autoindex) trebuie să fie activate
Opțiuni +Indecși
# Protejați fișierele CSV împotriva accesării, dar încă vizibile în lista de directoare
<Dacă „%{THE_REQUEST} =~ m#\.csv(\s|\?)#">
AuthName „Prompt de dialog”
AuthType Basic
AuthUserFile /xxxxx/test
Necesită utilizator valid
</Dacă>
CEREREA
conține prima linie a cererii HTTP. de exemplu. GET /foo/test.csv HTTP/1.1
(în cazul unei cereri GET pentru /foo/test.csv
) - și nu se modifică pe parcursul cererii. Deci, atunci când solicitați directorul în sine, de ex. /foo/
atunci blocul inclus nu este procesat și lista acestor fișiere nu este blocată.
Complicația suplimentară este că CEREREA
conține întreaga adresă URL așa cum a fost solicitată, care ar putea include un șir de interogare. Deci, cecul pentru (\s|\?)
(adică spații albe sau un literal ?
) este pentru a evita ocolirea verificării parolei prin simpla includere a unui șir de interogare. de exemplu. /foo/test.csv?orice
.