Fișierele de configurare .htaccess ale lui Apache au încurcat nenumărate dezvoltatori. Acest tutorial își propune să depășească această confuzie concentrându-se pe exemple și descrieri amănunțite. Printre avantajele învățării .htaccess de învățare este gzipping-ul automat al conținutului dvs., furnizarea de adrese URL mai prietenoase, prevenirea conectării la hotlink, îmbunătățirea memoriei cache și multe altele.
Acest articol vă va învăța despre configurarea manuală a fișierelor .htaccess, dar dacă doriți o soluție simplă și rapidă, încercați să descărcați .htaccess Builder de la Envato Market. Acesta vă permite să livrați rapid și fără efort un fișier htaccess fără a fi nevoie să vă amintiți nimic despre limbajul serverului Apache utilizat pentru a construi fișierul htaccess!
.Constructorul htaccess pe piața EnvatoAm citit o serie de articole .htaccess online. O să recunosc fără rușine
Nu am depășit pagina principală a rezultatelor Google. Am fost șocat când
De fapt, am citit articolele și am constatat că nici unul dintre ei nu explica ce era de fapt Apache
face. Ele erau doar o colecție de trucuri populare sau utile sau
fragmente de cod reutilizabil. Asta e bine și bine, dar clasicul
argumentul este:
"Dă un om un pește și el va mânca o zi. Învățați un om să pescuiască și el
va mânca pentru o viață. "
- Confucius
În acest articol voi încerca să nu vă arăt doar exemple utile
.directivele htaccess, dar explicați exact ce este
continuă. În acest fel, veți înțelege principiile de bază și apoi puteți extinde
exemple sau creați comenzi noi pentru uz propriu, indiferent de modalitățile creative sau utile
puteți să veniți.
Accentul meu va fi pus pe Apache 2, oricât de mult se va aplica
la Apache 1.3 și voi încerca să subliniez diferențele despre care știu.
În cele din urmă, acest tutorial va face cel mai mult sens dacă îl citiți în ordine.
Încerc să-mi leagă exemplele și să le construiesc în așa ceva
astfel încât să le puteți încerca singur și să le urmați.
Pentru a cita Apache:
.fișierele htaccess (sau "fișierele de configurare distribuite") oferă o modalitate de a face
modificări de configurare pe bază de director. Un fișier care conține unul sau mai multe
directivelor de configurare, este plasat într-un anumit director de documente, și
directivele se aplică directorului respectiv și tuturor subdirectoarelor acestuia.
"Directive" este terminologia utilizată de Apache pentru comenzile din Apache
fișiere de configurare. În mod normal, acestea sunt comenzi relativ scurte, de obicei
cheie perechi de valori, care modifică comportamentul lui Apache. Un fișier .htaccess permite
dezvoltatorii să execute o grămadă de aceste directive fără a fi nevoie de acces
Fișierul de configurare al serverului de bază Apache, numit adesea httpd.conf. Acest fișier,
httpd.conf, este denumit de obicei "fișierul global de configurare" și voi
se referă la acesta cu acel nume sau cu numele echivalent al acestuia.
Această caracteristică este ideală pentru multe companii de găzduire care desfășoară o găzduire comună
mediu inconjurator. Compania gazdă nu va permite clienților săi să acceseze
fișierul global de configurare, care afectează în final toți clienții găzduiți
acel server. În schimb, prin activarea .htaccess, aceștia oferă fiecăruia dintre clienții lor
puterea de a specifica și de a-și executa propriile directive Apache în propriile lor
directoare și subdirectoare. Bineinteles, este de asemenea folositor pentru single
dezvoltator, după cum veți vedea.
Merită menționat faptul că orice poate fi făcut cu un fișier .htaccess poate
se face în fișierul httpd.conf. in orice caz, NU tot ce se poate face în
httpd.conf se poate face într-un fișier .htaccess. De fapt, fișierele .htaccess trebuie să fie
activat în fișierul httpd.conf pentru a fi executat deloc. Odată activată,
puterea lor poate fi limitată la anumite "contexte", astfel încât acestea să fie permise
pentru a suprascrie unele setări, dar nu și altele. Aceasta oferă administratorilor de sistem
mai mult control asupra a ceea ce au lăsat alți dezvoltatori să scape cu ei
.fișiere htaccess.
.Fișierele htaccess sunt activate în mod normal în mod implicit. Acest lucru este de fapt controlat
prin Directiva AllowOverride din fișierul httpd.conf. Această directivă
pot fi plasate numai în interiorul unui
tu. Fișierul tipic httpd.conf definește un DocumentRoot și majoritatea
din dosar va conține directive în interiorul unui
cu acel director. Aceasta include directiva AllowOverride.
Valoarea implicită este de fapt "Toate" și, prin urmare, fișierele .htaccess sunt activate de către
Mod implicit. O valoare alternativă ar fi "Niciuna" care ar însemna că acestea sunt
complet dezactivat. Există numeroase alte valori care limitează numai configurația
anumite contexte. Unii sunt:
Voi arăta câteva exemple, fără cele corespunzătoare
Iată un exemplu care permite deplasarea completă a .htaccess:
# Permite .htaccess fișierele lor de putere completă AllowOverride Toate
Iată un exemplu care are o abordare mai fină și permite doar
suprasolicitarea contextelor de autorizare și indexare, dar nimic altceva:
# Permiteți numai fișierelor .htaccess să suprascrie indicele AllowOverride AuthConfig de autorizare și indexuri
Prima linie din ambele exemple sunt comentariile lui Apache. Comentariile încep
cu simbolul "#". Acest lucru este comun pentru multe fișiere de configurare și scripting
limbi. Voi avea multe comentarii în exemplele mele pentru a vă explica ce fac lucrurile.
Cu toate acestea, acestea nu sunt necesare, și este într-adevăr doar preferința personală pe cât de mult vă
doresc să comenteze. Nu sunt necesare comentarii.
A doua linie este directiva AllowOverride în sine. Aceasta este sintaxa obișnuită a unui
Apache. Mai întâi există numele directivei "AllowOverride" urmat de un spațiu
lista de valori separate. Deși această sintaxă pare destul de slăbită; fii mereu atent.
Uneori, chiar o singură eroare în fișierul httpd.conf sau .htaccess va avea ca rezultat o
împrăștiere temporară a serverului, iar utilizatorii vor vedea 500 pagini interne de eroare de server.
Din acest motiv, este o practică bună să creați întotdeauna o copie de rezervă a fișierelor httpd.conf și .htaccess înainte de a efectua o modificare sau adăugare. În acest fel, dacă ceva nu merge bine cu o modificare, veți avea
nimic de care să vă faceți griji, deoarece puteți reveni la versiunea dvs. de lucru anterioară. eu voi
de asemenea, să vă încurajați să faceți mici modificări la un moment dat și să vă asigurați că modificările funcționează
incremente, spre deosebire de efectuarea unui număr de modificări simultan. În acest fel, dacă faceți
o eroare, va fi mult mai ușor să urmăriți ce poate fi cauzat.
Dacă vreodată vă confundați cu privire la sintaxa oricărei directive, mergeți imediat la
Apache Directive și listați și revizuiți "Sintaxa" pe care au enumerat-o în tabel
pentru fiecare directivă individuală. Voi face tot posibilul pentru a încerca să o explic
(Încerc să învăț), dar explicația mea nu poate fi niciodată la fel de bună ca și ea
documentația tehnică formală. Nu vă temeți niciodată de documentație
cea mai fidelă și mai fiabilă referință. Voi încerca să fac lucrurile mai interesante
aici (woohoo!), dar în cele din urmă, eu doar pun o rotire diferită pe acele documente.
Este foarte posibil, de fapt, este foarte probabil ca compania dvs. de găzduire să nu o facă
vă va oferi acces la fișierul httpd.conf. Deci, cum știți dacă este activat suportul .htaccess
sau nu? Nu vă faceți griji, .htaccess este o caracteristică foarte utilă și utilă pe care majoritatea companiilor o vor face
au activat sau vor permite dacă vă întrebați politicos.
Cel mai bun lucru de făcut ar fi să verificați doar compania dvs. de găzduire. Dacă nu este explicit
enumerate oriunde în planul dvs. de găzduire, apoi trageți suportul acestora printr-un e-mail. Acesta este un lucru relativ comun
întrebare, astfel încât acestea probabil au deja deja un răspuns gata pentru tine. Probabil că vor fi dispuși
să activați serviciul sau cel puțin să dați un motiv pentru care este posibil să nu se permită acest lucru.
În orice caz, puteți oricând să faceți o șansă și să vedeți dacă funcționează un fișier simplu .htaccess!
Sunt incluse în acest exemplu de descărcare tutorialul două modalități pe care le puteți verifica pentru a vedea dacă .htaccess
suportul este activat. Cele două dosare sunt "is_htaccess_enabled" și "is_htaccess_enabled_2".
Dați-le o șansă, voi explica ceea ce face fiecare aici.
Acest caz de testare este foarte simplu. Folosește o directivă pentru a face Apache să arate
în primul rând pentru "indicele"good.html "înainte de" index.html ". Dacă suportul .htaccess este
activat, când îndreptați browserul către dosar, Apache va încărca fișierul .htaccess și va ști asta
ar trebui să afișeze "indexul"good.html "care conține un mesaj verde care spune" Felicitări "!
Dacă suportul .htaccess nu este activat, Apache va ignora în mod implicit .htaccess
fișier și căutați imediat un fișier index.html.
# Această directivă va face Apache să privească prima # pentru "index_good.html" înainte de a căuta "index.html" DirectoryIndex index_good.html index.html
Direcția DirectoryIndex are o listă separată de nume de fișiere.
Când Apache primește o adresă URL a unui director și nu o pagină directă (de exemplu
http://www.example.com și nu http://www.example.com/index.html) Apache va folosi acest lucru
lista de fișiere pentru a căuta pagina corectă de încărcat. Apache va căuta fișierele
utilizând valorile din listă de la stânga la dreapta. Primul fișier pe care Apache îl vede există
va fi fișierul pe care îl încarcă și îl va afișa clientului.
Folosind fișierul .htaccess de mai sus, iată un exemplu de cazuri bune (activate) și de rele (dezactivate):
Așa cum am spus mai devreme, o eroare de sintaxă în fișierul .htaccess va determina serverul să sune.
Puteți folosi acest lucru în avantajul dvs. pentru a testa dacă serverul dvs. are suportul .htaccess activat!
Iată un exemplu de fișier .htaccess care este destinat să explodeze.
# Acest fișier este destinat să facă Apache să explodeze. Acest lucru vă va ajuta # să determinați dacă .htaccess este activat sau nu! AHHHHHHH
Este destul de clar că "AHHHHHHH" nu este o directivă valabilă Apache. Acest lucru va provoca
o eroare dacă Apache încearcă să citească fișierul .htaccess! Deci, dacă vă întoarceți o pagină țipând
"Eroare server internă", atunci serverul dvs. caută fișierele .htaccess! Dacă de fapt
consultați conținutul fișierului index.html, atunci este posibil ca acestea să fi fost dezactivate. Aici sunt din nou cazurile bune și rele:
În cele din urmă, este încă posibil ca suportul .htaccess să fie încă activat, doar cu
setări unice. Administratorii de sisteme pot schimba numele fișierului .htaccess doar
cum am schimbat numele fișierului implicit pe care Apache îl caută. Acest lucru este posibil prin
utilizând AccessFileName
în fișierul global de configurare. Din nou, cel mai bun lucru de făcut în cazul ăsta ar fi acela de a fi
contactați compania dvs. de găzduire pentru mai multe informații.
Înainte să intru în unele lucruri interesante cu fișierele .htaccess, trebuie să fac
să-ți spun ce intri. După cum am menționat mai devreme, permiteți
suprascrierea setărilor de server pentru un director și toate subdirectoarele sale. Mereu
rețineți că influențați toate subdirectoarele, precum și cele actuale
director.
De asemenea, atunci când este activat, serverul va avea un impact potențial asupra performanței. Motivul este pentru că, fiecare cererea serverului, dacă suportul .htaccess este activat, atunci când Apache merge pentru a prelua fișierul solicitat pentru client, trebuie să caute un fișier .htaccess în fiecare director care duce la locul în care fișierul este stocat.
Aceasta înseamnă o serie de lucruri. Mai întâi, deoarece Apache întotdeauna caută fișierele .htaccess
la fiecare solicitare, orice modificare a fișierului va intra imediat în vigoare.
Apache nu le cachează și va vedea imediat modificările dvs. la următoarea solicitare.
Cu toate acestea, acest lucru înseamnă că Apache va trebui să facă ceva lucru pentru fiecare cerere.
De exemplu, dacă un utilizator solicită /www/supercool/test/index.html, atunci serverul dvs.
ar verifica următoarele fișiere .htaccess:
/www/.htaccess/www/supercool/.htaccess/www/supercool/test/.htaccess
Aceste posibilități de acces la fișiere (potențiale, deoarece fișierele ar putea să nu existe) și ale acestora
(dacă au existat) va avea nevoie de timp. Din nou, experiența mea este că este
neobosit și nu depășește avantajele și flexibilitatea .htaccess
fișierele furnizează dezvoltatorilor.
Cu toate acestea, dacă acest lucru vă privește, atâta timp cât aveți acces la fișierul httpd.conf
atunci puteți pune întotdeauna directivele dvs. acolo. Prin setarea AllowOverride la "None"
Apache nu va căuta acele fișiere .htaccess. Dacă vrei cu adevărat, poți pune
directivele pe care ați vrut să le puneți în fișierul /www/supercool/test/.htaccess
direct în httpd.conf cum ar fi:
# Puneți directivele aici
Dezavantajul acestei abordări este că va trebui să reporniți serverul Apache
la fiecare schimbare, astfel încât să reîncarce noua configurație.
În cele din urmă, se ajunge la preferințele personale sau la orice vă permite gazda.
Prefer sa folosesc fișierele .htaccess pentru că am flexibilitatea de a le plasa acolo
Vreau și efectele lor sunt live imediat, fără a necesita o resetare a serverului.
Înainte de a intra în oricare dintre caracteristicile complexe, să începem cu ceva
simplu, dar util, astfel încât să puteți obține un sentiment de lucru cu fișierele .htaccess.
Listarea listelor este atât de comună încât probabil că le-ați întâlnit numeroși
de navigare pe Internet.
Atunci când un utilizator solicită un director, Apache caută mai întâi fișierul implicit. În mod obișnuit, va fi numit "index.html" sau "index.php" sau ceva similar. Când nu
găsiți unul din aceste fișiere, se întoarce pe modulul mod_autoindex la
afișați o listă a fișierelor și a dosarelor din acel director. Uneori asta
este activată, uneori dezactivată și, uneori, doriți
face personalizări. Ei bine, cu .htaccess puteți manipula cu ușurință aceste listări!
În mod implicit, listele de agende sunt activate. Iată un exemplu de scenariu.
Să presupunem că aveți o grămadă de fișiere media pe care le stocați pe serverul dvs. web,
și doriți să le ascundeți de public și de motoarele de căutare, astfel încât nimeni nu poate
fura aceste fișiere. E foarte ușor de făcut! Pur și simplu creați un fișier .htaccess
în directorul pe care doriți să-l ascundeți și adăugați următoarea directivă:
# Dezactivează listele de director din acest director și din subdirectoarele # Aceasta va ascunde fișierele de la public dacă nu știu adresele URL directe Opțiuni -Indexuri
În ruptură, folosim directiva Opțiuni.
Această directivă poate lua o serie de valori (menționate anterior). Dacă oferiți valorile
cu un + sau - cum am făcut cu -Indexes, atunci acesta va moșteni
Opțiunile activate în directoarele superioare și în configurația globală!
Dacă nu oferiți un + sau - atunci lista pe care o oferiți va deveni
numai opțiunile activate pentru acel director și subdirectoarele sale. Nu vor fi activate alte opțiuni. Deoarece este posibil să nu știți ce opțiuni au fost activate anterior, probabil că veți fi probabil
utilizați sintaxa + sau - dacă nu sunteți absolut sigur (ă) numai doriți anumite Opțiuni.
Acum, cu directiva respectivă în fișierul .htaccess, când direcționați browserul către acel director
nu veți mai putea vedea fișierele. Aici este înainte și după:
Bine, dezactivarea totală a indexului de adrese nu este ceea ce vreți. E mai mult
probabil că doriți să păstrați Indexurile, dar să permiteți accesul anumitor persoane.
Acesta este locul în care autentificarea de bază poate fi foarte utilă. Aceasta este cea mai comună
tip de autentificare pe web. Când utilizatorul încearcă să acceseze pagina pe care o utilizează
va vedea dialogul familiar de utilizator și parolă. Doar un utilizator cu propriu
acreditările vor putea accesa conținutul.
Pentru autentificarea de bază există doar doi pași.
În mod tradițional, dezvoltatorii web au denumit fișierul care stochează numele de utilizator și
parolele ".htpasswd". Acest lucru se datorează faptului că instrumentul de linie de comandă cu care se livrează
Apache care generează perechea corectă de nume de utilizator / parolă criptată este de fapt
numit htpasswd! Dacă vă simțiți confortabil la linia de comandă puteți folosi htpasswd
instrument, cu toate acestea, există o mulțime de instrumente online care vor genera ieșirea la fel de ușor.
Am creat un exemplu de fișier .htpasswd pentru un utilizator "joe" cu parola "cool".
Am aruncat aceste valori în instrumentul online legat și a produs:
joe: $ apr1 $ QneYj / ... $ 0G9cBfG2CdFGwia.AHFtR1
Puterea dvs. poate fi diferită, este în regulă. Parolele sunt șterse cu
o sare aleatorie pentru a le face un pic mai unice și mai sigure. Odată cu numele de utilizator
și combinația de parole a fost adăugată în fișierul .htpasswd, atunci ar trebui
adăugați următoarele fișiere în fișierul dvs.:
# Activați autentificarea de bază AuthType Basic # Acesta este ceea ce va fi afișat utilizatorului în dialogul de autentificare. AuthName "Accesul la fișierele ascunse" # Aceasta trebuie să editați. Este calea absolută către fișierul .htpasswd. AuthUserFile /path/to/.htpasswd # Aceasta permite oricărui utilizator din interiorul fișierului .htpasswd să acceseze conținutul # dacă furnizează numele de utilizator și parola corespunzătoare. Solicitați utilizator valid
Aceste comenzi sunt bine documentate. Singura provocare reală este că tu
trebuie să setați corect calea la fișierul .htpasswd pe care tocmai ați făcut-o
generate. Aceasta este o cale absolută absolută de la rădăcina absolută a
Server. De asemenea, deoarece calea de fișier .htpasswd este absolută, este bine
practica de a pune într-un director în afara directorului în cazul în care Apache
servește pagini web pentru public. În acest fel, utilizatorii rău-intenționați nu vor putea
pentru a obține cu ușurință accesul la listele brute de utilizatori / parole stocate în .htpasswd.
Odată ce totul este configurat, atunci când cineva încearcă să acceseze pagina pe care o va face
primiți următorul dialog:
Autentificarea de bază este plăcută și ușoară, dar nu este o soluție totală.
Parolele sunt trimise prin fir, Base 64 Encoded, în text simplu. daca tu
doriți autentificare mai sigură, trebuie să cuplați Autentificarea de bază
cu https, mai mult
protocol sigur. Acesta este un subiect pentru un alt moment.
Protocolul de bază al web-ului este Hypertext Transfer Protocol (HTTP).
Dacă chiar doriți să înțelegeți ce restul de directive Apache
Faceți-vă o înțelegere a protocolului. Sunt
doar de gând să su pplya rezumat foarte rapid aici. Voi face și eu un efort
pentru a explica ceea ce fac directivele mai complexe, dar va face
mai mult sens dacă înțelegeți anteturile HTTP.
Rezumatul rapid este că HTTP este apatrid. Cu fiecare cerere (din browser)
și fiecare răspuns (de pe serverul Web ca Apache) există două secțiuni.
O secțiune a informațiilor despre Antet, apoi o secțiune opțională care conține datele în sine,
dacă există date.
Solicitarea informațiilor antetului specifică adesea fișierul în care sunt
solicitând de la server (index.html) orice informații de stat pe care ar trebui să le furnizeze
(cum ar fi datele cookie) și tipurile de mime pe care este dispus să le accepte din nou de pe server
(conținut text / html sau chiar codificat în gzip).
Informațiile din antetul de răspuns specifică adesea informațiile despre serverul generic (Apache, PHP,
Versiuni Perl etc.), codarea conținutului, lungimea, mime / tip și multe altele. Acolo
sunt o mulțime de anteturi HTTP pentru a specifica chiar și mai multe detalii, cum ar fi Controlul cache-ului,
Redirecționări și coduri de stare. Ai primit vreodată un 404? Acesta a fost rezultatul solicitării unui a
fișierul pe care serverul nu l-a putut găsi și astfel a trimis un 404 înapoi
Codul de stare în
Raspuns.
Ce legătură are acest lucru cu .htaccess? Puteți folosi directivele Apache
suprascrie (set) sau adăugați anteturi noi (add) care sunt trimise înapoi la client
în secțiunea Header-ul răspunsului. De asemenea, după cum veți vedea în tutoriale ulterioare,
funcțiile mai avansate, cum ar fi rescrierea URL-urilor se ocupă de anteturile primite.
Să începem simplu, vom adăuga un antet la răspuns și vom vedea ce se întâmplă:
# Adăugați următorul antet la fiecare răspuns Header add X-HeaderName "Header Value"
Solicitarea unui fișier în același director ca și acest fișier .htaccess arată
extra header:
Probabil ați crezut că este ciudat că am prefixat antetul personalizat cu
"X-". Aceasta este de fapt o convenție comună pe care dezvoltatorii o folosesc pentru a desemna acest lucru
antetul este un antet nestandard. Acest lucru face foarte ușor să realizăm că acest antet este personalizat. Această convenție este
pe scurt, aici.
Într-o notă mai comică, unii oameni au avut un pic de distracție cu anteturile.
Acest site
arată unele anteturi destul de neobișnuite găsite pe tot globul.
Cu toate acestea, chiar vreau să vă arăt cum să creați Headers astfel încât să puteți
utilizați-le ca o tehnică de depanare. Doar a doua zi, am făcut un test
verificați dacă anumite module au fost activate pe un server web. Am scris
următoarea verificare:
Antetul adaugă mod_gzip activat cu X Antetul adaugă mod_deflate activat cu X
Când mi-am făcut următoarea solicitare cu browser-ul meu și am verificat Antetele de răspuns, acesta
a arătat că nici unul dintre module nu a fost pornit! Am contactat compania mea de găzduire, și au convenit să permită compresia gzip!
Există o diferență între setarea Header și
Antetul adaugă. Cu add, Header va mereu adăugați
la răspuns. Chiar dacă se întâmplă să apară de mai multe ori în răspuns. Acest lucru este cel mai adesea
ceea ce doriți pentru anteturi personalizate. Ați folosi setul când doriți
suprascrie valoarea uneia dintre anteturile implicite pe care Apache le întoarce. Un
exemplul ar depăși tipul / tipul specificat de tipul de conținut
antet pentru un anumit fișier. Apache va stabili valoarea internă și apoi
utilizați acest lucru atunci când se imprimă antetul implicit. Nu va exista
duplicate și, prin urmare, nici o posibilitate de a interpreta o eroare sau o confuzie
de către client. (În cazul în care vă întrebați, specificația HTTP afirmă că, în
în cazul duplicatelor, clientul ar trebui să utilizeze întotdeauna ultima valoare specificată
pentru acel antet duplicat.)
Am trecut prin câteva directive de bază despre Apache într-un mod destul de detaliat. Voiam să scot detaliile fundamentale, astfel încât următorul tutorial să poată discuta despre lucruri mai reci. Următorul articol va
concentrați-vă pe unele dintre caracteristicile mai utile pe care le puteți activa cu .htaccess.
Aceste subiecte vor include:
Și nu uitați, dacă vă străduiți să urmați acest lucru, o altă opțiune este încercarea utilitarului .htaccess Builder disponibil pe Envato Market.