Fișierul htaccess modifică setările serverului care afectează. Cum se creează și se configurează corect un fișier htaccess? Interziceți accesul tuturor, cu excepția adreselor IP specificate

(11 )

File.htaccess este un document de serviciu specializat folosit pentru a modifica setările serverului web Apache și ale serverelor similare. Mai simplu spus, utilizarea lui vă va ajuta să schimbați modul în care funcționează site-ul: configurați accesul la foldere, fișiere și alte materiale, specificați reguli pentru rescrierea legăturilor și avertismentele de eroare. În același timp, nu modificați funcționarea întregului server, configurând doar parametri suplimentari pentru unii utilizatori.

Când proprietarul unui site web lucrează la proiectul său, va veni cu siguranță un moment când va trebui să folosească fișierul .htaccess. În ciuda importanței sale enorme, pentru mulți webmasteri, în special pentru începători, rămâne necunoscut, deoarece pentru a-l înțelege, trebuie să ai cunoștințe bune nu doar de SEO, ci și de programare.

În acest articol, vă vom ajuta să înțelegeți de ce este necesar .htaccess și cum să îl configurați. Acest lucru este foarte important, deoarece deschide opțiuni flexibile pentru proprietarii de site-uri web care doresc să asigure securitate de încredere pentru resursele lor.

În acest fișier, creatorii de site-uri pot:

  • Configurați directive simple de redirecționare (redirecționări). Acest lucru va permite, după schimbarea domeniului, să trimită vizitatorul de pe pagina site-ului anterior la noul proiect.
  • Redirecționare de la o adresă URL cu www la un domeniu fără www. Sau la https după instalarea certificatului ssl.
  • Descrie erorile. Acestea includ o eroare 404 cu înlocuirea cu pagina necesară.
  • Memorarea în cache a fișierelor. Acest lucru se face pentru a accelera funcționarea unei resurse web.
  • Creați un CNC. Acestea sunt „URL-uri care pot fi citite de oameni”, adică se formează link-uri care sunt ușor de înțeles pentru utilizatorii de internet.
  • Schimbați codul sursă al paginilor.
  • Controlați accesul la fișiere și directoare folosind parole.
  • Specificați fișierul index.
  • Permiteți și blocați accesul de la anumite adrese IP.
  • Gestionați roboții de căutare pe site.
  • Configurați directive complexe.

Scopul principal al .htaccess este de a personaliza site-ul și directoarele în conformitate cu anumite cerințe. Adică, prin acest fișier, specialiștii și programatorii SEO pot modifica setările serverului web chiar și fără drepturi de administrator. Dar modificările sunt făcute numai pentru un anumit site și nu afectează în niciun fel serverul în sine.

Configurațiile serverului sunt modificate numai folosind directive (comenzi) care includ o „cheie” și o „valoare” pentru acesta. Toate cele mai importante directive care vă permit să gestionați serverul se află în fișierul principal de configurare numit httpd.conf. Problema este că utilizatorul obișnuit nu are posibilitatea de a-l accesa, deoarece conține un număr mare de parametri de care depinde performanța întregului server. Acesta este motivul pentru care .htaccess este relevant, permițându-vă să modificați unele directive din fișierul principal.

Toate ajustările din fișierul auxiliar afectează întregul director în care se află. Și dacă încărcați acest document în folderul rădăcină al site-ului, modificările vor afecta întreaga resursă.

Unde se află .htaccess?

Puteți verifica cu ușurință dacă aveți un fișier de serviciu. Se deosebește de multe alte documente prin faptul că are doar o extensie sub forma unui titlu dintr-un cuvânt, în timp ce nu există titlu în sine. Da, suntem cu toții obișnuiți să vedem fișiere cu un nume dintr-un cuvânt și o extensie după un punct, care este format din doar 2-3 litere. Dar numele goale vă permit să faceți fișiere și foldere „ascunse”, open source. De aici rezultă că .htaccess rămâne invizibil pentru utilizatorii obișnuiți, astfel încât aceștia nu îl vor putea schimba.

Dar această metodă de a „ascunde” un fișier are și un dezavantaj. În clienții FTP standard de pe Windows și Mac, documentul rămâne foarte adesea invizibil pentru utilizatori, motiv pentru care aceștia cred în mod eronat că pur și simplu nu există. Prin urmare, o persoană creează un fișier nou pentru a-și introduce configurațiile, codurile pentru gestionarea erorilor, crearea accesului la foldere etc. Este bine că majoritatea lasă spațiu pe disc unde fișierul htaccess este deja instalat automat.

Dar dacă nu îl găsiți, atunci încercați să accesați managerul de fișiere care este încorporat în găzduirea dvs. Poate afișa fișiere și directoare ascunse. Căutați-l în public_html, apoi folosind editorul de text instalat în program, editați și salvați fișierul, după care va fi încărcat pe server pe cont propriu.

Dacă nu găsiți un document în calea specificată, atunci creați-vă propriul document. Se poate întâmpla ca pe ecran să apară o eroare. Aceasta înseamnă că acest hoster a interzis crearea unui fișier de serviciu.

Serviciile de găzduire ieftine interzic adesea clienților să creeze și să editeze un astfel de document. Astfel, aceștia sunt încurajați să-și folosească serviciile la tarife mai scumpe, acolo unde este permis.

Cum să creați corect .htaccess

Pentru a face acest lucru, veți avea nevoie de cel mai comun editor de text, de exemplu, Notepad, care este disponibil pe orice computer:

  1. Deschide Notepad, nu scrie nimic în el.
  2. Selectați un articol "Fişier"și apăsați "Salvează ca".
  3. O fereastră va apărea în locul opus articolului "Tip fișier" Selectați « Toatetipuri" sau "Toate filele".
  4. În linie "Nume de fișier" introduce . htaccesși faceți clic pe "Salva".

Apoi, verificați din nou dacă documentul a fost creat corect. Asigurați-vă că vedeți dacă l-ați salvat ca .htaccess.txt. Apoi încărcați fișierul în folderul rădăcină al serverului și, dacă nu vedeți o eroare 500, atunci ați făcut totul corect.

De acum înainte, puteți edita fișierul, permițându-vă să vă gestionați site-ul mai flexibil.

Exemple de utilizare

Să ne uităm la cele mai populare comenzi pentru .htaccess.

Redirecţiona

Aceste directive sunt folosite cu o regularitate de invidiat. Acestea vă permit să redirecționați vizitatorul de la vechea adresă URL la noua pagină. Acest lucru este posibil datorită unei redirecționări 301. Doar scrieți în codul fișierului:

Redirecționare 301 /old_URL.html http://www.your_site_name.ru/new_URL.html

În general, directiva va fi afișată după cum urmează:

Redirecționează URL_LOCAL URL_REDIRECT

URL_LOCAL– aceasta este adresa veche de la care utilizatorul este transferat.

URL_REDIRECŢIONA– noua adresă URL la care este mutată pagina.

În câmp [ stare] poate avea următoarele valori:

  1. 301 – pagina a fost mutată pentru totdeauna.
  2. 302 – pagina a fost mutată temporar.
  3. 303 – vezi o altă pagină.
  4. 410 – pagina a fost ștearsă.

Mod_rewrite (directive de transfer complexe)

Acest modul este conținut în Apache. Are o multitudine de directive diferite pentru gestionarea avansată a adreselor. Cele principale includ:

1. Specificarea oglinzii principale

Proiectat pentru a converti un domeniu din www într-o adresă URL non-www. Este suficient să introduceți regula:

RewriteEngine On # activează RewriteCond %(HTTP_HOST) ^www.your_site_name\ru$ #condiții pentru începerea redirecționării RewriteRule ^(*)$ http://your_site_name_/$1 #conversion rule

2. Transferați pe https

Astăzi, motorul de căutare Google încurajează în mod activ proprietarii de site-uri să folosească o conexiune sigură, pentru care este necesar să redirecționați utilizatorii de la http la https folosind codul:

RewriteEngine On RewriteCond %(HTTPS) !on RewriteRule (.*) https://%(HTTP_HOST)%(REQUEST_URL)

3. Punerea unei bare oblice la sfârșitul adresei

Dacă nu doriți ca adresa URL a paginii să se termine cu numele directorului http://name_of_your_site.ru/catalog, introduceți codul în fișier:

RewriteCond %(REQUEST_URI) /+[^\.]+$ RewriteRule ^(.+[^/])$ %(REQUEST_URI)/

După executarea acestei comenzi, o bară oblică va fi adăugată automat după adresă în viitor: http://name_of_your_site.ru/catalog/

4. Transfer de domeniu

Când schimbați numele site-ului, nu uitați să specificați în .htaccess:

RewriteEngine on RewriteCond %(HTTP_HOST) ^www\.yoursite.ru\.ru$ RewriteRule ^(.*)$ http://www.your-site.ru/$1

Atunci când optimizați un site atât pentru Yandex, cât și pentru Google, schimbarea numelui de domeniu poate fi plină de consecințe neplăcute. Instrucțiunile din robots.txt destinate Yandex sunt acoperite de o redirecționare 301. Dar acest lucru poate fi prevenit prin adăugarea unei reguli la cod:

RewriteEngine on RewriteCond %(REQUEST_FILENAME) robots.txt$ RewriteRule ^([^/]+) $1 [L] RewriteCond %(HTTP_HOST) ^mysite\.ru RewriteRule ^(.*)$ http://www.my-site .ru/1 USD

5. Comenzi interzise pentru botul de căutare

În .htaccess, la fel ca în robots.txt, puteți bloca accesul la site pentru roboții motoarelor de căutare:

RewriteEngine on RewriteCond %(USER_AGENT) Googlebot RewriteRule .* - [F] # F – dă eroarea 403 – nu este permis accesul cu crawlere

Eroare la procesare

Aproape fiecare utilizator de internet a întâlnit eroarea 404 negăsit (pagina negăsită sau ștearsă). Dar există un număr mare de alte erori de care probabil nu ați auzit.

În fișierul de serviciu, puteți înregistra un fișier pentru a-l afișa în timpul unei erori. Dar mai întâi trebuie să creați același fișier în extensia html și să scrieți în el care este această eroare. Apoi, în funcție de eroarea pe care o utilizați, adăugați următoarele la codificarea.htaccess:

ErrorDocument 404 /siteerror404.html

Documente indexate

Când un vizitator vizitează site-ul, fișierul index index.xml este deschis imediat. Puteți înlocui pagina de index cu oricare alta adăugând următorul cod:

DirectoryIndex nume.xml

Sau adăugați mai multe astfel de pagini, iar motorul de căutare le va găsi în ordinea corespunzătoare:

DirectoryIndex index.html index.php index.pl

Specificarea codificării

Această funcție este necesară pentru a vă asigura că textul este afișat corect pe ecranul utilizatorului. Altfel, în loc de o pagină normală care poate fi citită, va vedea caractere ciudate. Astăzi, codificarea este utilizată pe scară largă: Windows-1251 – chirilic șiUTF-8 – codificare pe doi octeți. Pentru a selecta o codificare într-un document de serviciu, se utilizează următoarea directivă:

AddDefaultCharset WINDOWS-1251

Și pentru ca în viitor, când încărcați fișiere pe server, să nu existe probleme, indicați că toate fișierele noi vor fi convertite la o codificare similară:

CharsetSourceEnc WINDOWS-1251

Specificarea parolelor pentru directoare

Pentru a face acest lucru, scrieți în directorul care trebuie închis:

AuthName „Necesită parolă” #mesaj pentru solicitarea unei parole AuthType Basic #authentication type AuthUserFile /parole/.psd #numele fișierului care conține parolele de conectare Necesită utilizator valid #numele utilizatorilor care au acces

Acces la fișiere și directoare

Folosind fișierul .htaccess, puteți refuza complet sau parțial accesul la anumite fișiere. Să presupunem că doriți să blocați accesul la directorul de sistem. Apoi, în .htaccess corespunzător scrieți:

Negați de la toți

Pentru a preveni vizualizarea unui anumit fișier, de exemplu test.php:

nega de la toti

Comanda vă permite să deschideți navigarea pentru o anumită IP, în timp ce interziceți accesul altora:

Comanda Deny,Allow Deny de la toate Permite de la 12.345.678.90

Concluzie

După cum puteți vedea, fișierul de serviciu .htacces este unul dintre cele mai importante instrumente pentru funcționalitatea completă a unei resurse web. Și după ce v-ați familiarizat cu capacitățile sale, probabil v-ați întrebat de ce știați puțin despre acest fișier înainte. Este un instrument eficient pentru SEO și programatori pentru a face modificări la configurațiile serverului web pentru anumite site-uri, fără a afecta serverul în sine.

Datorită acesteia, proprietarii de proiecte pe Internet pot informa motoarele de căutare și vizitatorii despre o modificare a domeniului și le pot transfera într-unul nou, pot bloca accesul la toate sau anumite date despre resurse, pot împiedica corectarea și descărcarea acestora de către persoane neautorizate și oferă acces la anumite fișiere prin IP și parolă.

Folosim Apache httpd ca server web principal. Apache este folosit pentru a organiza majoritatea serverelor web din lume și este cel mai popular produs din clasa sa. Acest server are opțiuni extinse de configurare, este foarte productiv și acceptă toate protocoalele cunoscute pentru rularea serverelor web. Versiuni ale unor limbaje de programare populare precum Perl și PHP au fost create special pentru Apache, iar acest server se integrează, de asemenea, cu ușurință cu SGBD-uri utilizate pe scară largă (de exemplu, MySQL).

Site-ul principal al proiectului se află la httpd.apache.org, iar documentația principală pentru versiunea 1.3.xx este disponibilă la httpd.apache.org/docs/.

Oferim utilizatorilor posibilitatea de a configura Apache în mod independent, utilizând directivele corespunzătoare din . În acest fel, puteți rezolva majoritatea problemelor de configurare a serverului web în mediile de găzduire în masă.

Fișier index

Un fișier index sau fișier index este fișierul care se deschide în mod implicit atunci când un utilizator accesează un director prin web, mai degrabă decât un anumit fișier. De exemplu, vizitatorul dvs. va cere o adresă http://domeniul_dvs./preț/, unde preț este numele catalogului. Fișierul index este fișierul care va fi afișat utilizatorului atunci când accesează un director fără a specifica numele unui anumit fișier în el.

Fișierele index implicite sunt: ​​index.html, index.htm, index.php, index.php3, index.phtml, index.shtml, default.htm sau default.html. Dacă doriți ca un alt fișier să fie deschis mai întâi, trebuie să înlocuiți valorile curente. Citiți cum să faceți acest lucru.

Scopul și utilizarea fișierului .htaccess

Fişier .htaccess(rețineți că primul caracter din numele fișierului este un punct) este utilizat pentru a gestiona serverul web Apache de la utilizatorul final de găzduire. Puneți directive în acest fișier pe care serverul web le acceptă și le procesează, efectuând acțiuni conform setărilor care au fost făcute de utilizator.

Fișierul .htaccess poate fi plasat în directorul rădăcină al serverului web (direct în directorul www). În acest caz, directivele de la astfel de .htaccess sunt valabile pe tot serverul web. De asemenea, .htaccess poate fi localizat într-un anumit subdirector al serverului. Apoi, directivele care sunt specificate în acest fișier „overridesc” acțiunea directivelor din fișierul „principal”, care se află în director www sau în orice director de nivel superior. Adică efectul directivelor din .htaccess este moștenit de sus în jos, dar nu invers. Modificările aduse fișierului intră în vigoare imediat. Acest lucru se datorează faptului că informațiile din .htaccess sunt recitite de fiecare dată când este accesat serverul web Apache.

.htaccess poate conține majoritatea directivelor disponibile pentru un server web. Trebuie remarcat faptul că directivele care nu menționează .htaccess în câmpul Context nu sunt disponibile pentru utilizare în acest fișier de configurare. Folosind directiva AddType ca exemplu, vedem că câmpul Context conține o referință la .htaccess, așa că o puteți utiliza:

Dacă nu ați reușit să utilizați directiva necesară și ați văzut o eroare după adăugarea directivei la .htaccess , cel mai probabil, utilizarea comenzii este interzisă în condiții de găzduire virtuală. Scrieți suportului tehnic, vom încerca să vă ajutăm. Vă rugăm să descrieți problema în detaliu și să indicați obiectivele pe care doriți să le atingeți folosind această directivă.

Firewall aplicație web

Web Application Firewall (ModSecurity) este necesar pentru detectarea și prevenirea atacurilor asupra site-urilor web. Verificarea este efectuată după un anumit set de reguli și, dacă nu reușește, cererea către site este respinsă cu o eroare (403 interzis).

În cazul unor rezultate false pozitive, este posibil să dezactivați regulile prin .htaccess folosind opțiunile de mai jos:

  • SecRuleRemoveById - eliminați o regulă după id
  • SecRuleRemoveByTag - eliminați o regulă cu etichetă.

Puteți determina ce regulă trebuie dezactivată în jurnalul de erori error.log

Exemplu de dezactivare prin ID:

SecRuleRemoveById 933100 933150

Exemple de dezactivare prin etichetă:

SecRuleRemoveByTag „atack-injection-php” SecRuleRemoveByTag „CWAF”

Modificare codificare:

În mod implicit, serverul web „trimite” toate documentele HTML care sunt găzduite pe server în codificare Windows-1251. Puteți schimba tipul de codificare în care serverul web va „da” informații în contul dvs. personal.

Pentru a face acest lucru, accesați secțiunea „Arborele de servicii” și selectați domeniul pentru care trebuie să schimbați tipul de codificare. Apoi, în lista de parametri, găsiți linia codificare (implicit)și faceți clic pe adăuga, după cum se arată în figura de mai jos.

De asemenea, puteți modifica codarea folosind fișierul .htaccess. Pentru a face acest lucru, adăugați linia la acesta

AddType „text/html; charset=koi8-r” .html .htm .shtml

După ce a primit un astfel de .htaccess , serverul web Apache va emite un antet browser-ului client care indică faptul că documentul este codificat koi8-r.

Dacă resursa dvs. conține documente HTML în diferite codificări (ISO-8859-1, Windows-1250, Windows-1252, UTF-8), atunci poate fi necesar să dezactivați ieșirea forțată a antetelor cu codificare Windows-1251. Pentru a face acest lucru, adăugați următoarea linie la .htaccess:

AddDefaultCharset Dezactivat

În acest caz, codificarea corespunzătoare trebuie să fie scrisă pe fiecare pagină html sub forma unei etichete

Exemplu: cum se închide un director cu o parolă

Una dintre sarcinile standard care este rezolvată prin utilizarea .htaccess este restricționarea accesului la un anumit director de pe server. De exemplu, trebuie să acordați acces la un anume director vizitatorilor individuali, oferindu-le o autentificare și o parolă unice.

În directorul la care dorim să restricționăm accesul prin parolă, creăm un fișier .htaccess cu următoarele directive:

AuthType Basic AuthName „Unele nume” AuthUserFile /home/ uXXXX/.htpasswd necesită un utilizator valid

cale /home/uXXXXX/.htpasswd indică calea completă către fișierul cu parole de pe discul serverului nostru. Dacă, de exemplu, plasați fișierul .htpasswd (va conține parole) în directorul principal în care mergeți când accesați serverul prin FTP, atunci calea către acest fișier va arăta ca /home/uXXXXX/.htpasswd, Unde uXXXX— numele platformei dvs. virtuale (de exemplu, u12345).

În directiva AuthUserFile specificăm calea absolută către fișierul cu login/parole, pe care o vom crea puțin mai târziu. Dacă creați fișierul .htaccess pe computer și nu direct pe server folosind un editor de text, vă rugăm să rețineți că fișierul .htaccess trebuie transferat prin FTP strict în modul text (ASCII)..

Creați un fișier cu parole. Fișierul cu parole trebuie să conțină linii precum Parola de logare. Parola trebuie criptată folosind algoritmul MD5. O modalitate de a crea un astfel de fișier este să folosiți programul inclus cu Apache - htpasswd (pe serverul nostru se află în directorul /usr/local/bin/, calea completa - /usr/local/bin/htpasswd).

Să ne uităm la cum să creați un fișier de parolă în shell-ul Unix direct pe server. Să intrăm în shell și să executăm următoarele comenzi:

  • htpasswd -mbc .htpasswd user1 sNQ7j9oR2w creați un nou fișier .htpasswd, la care adăugam o intrare pentru utilizatorul user1 cu parola specificată pe linia de comandă. Cerere Neapăratînlocuiți sNQ7j9oR2w cu orice parolă personalizată - această parolă este afișată aici doar de exemplu
  • htpasswd .htpasswd user2 este adăugat la fișierul .htpasswd existent al utilizatorului user2, iar parola este introdusă manual ca răspuns la solicitarea corespunzătoare din program

Dacă utilizați Windows și nu doriți să utilizați shell-ul Unix pentru a genera parole, puteți descărca versiunea Windows a programului htpasswd și puteți crea un fișier cu parole pe computer, apoi îl puteți încărca pe server. Dacă aveți deja instalată versiunea Windows a Apache, fișierul htpasswd.exe pot fi găsite în catalog Fișiere de program\Apache Group\Apache\bin\.

Deci, obțineți htpasswd.exe și utilizați-l pentru a genera parole ca aceasta:

  • htpasswd.exe -mc .htpasswd utilizator1 creați un nou fișier de parole htpasswd.exe, parola și confirmarea acesteia vor fi solicitate interactiv
  • htpasswd.exe -m .htpasswd user2 adăugați utilizatorul user2 la fișierul de parolă existent htpasswd.exe, solicitând parola în mod interactiv

După ce toate conectările au fost create, fișierul trebuie să fie încărcat pe server.

Exemplu: Suprascrierea fișierului index

Situație: utilizatorul a accesat catalogul http://www.your_domain.ru/price/. Cu o astfel de solicitare, prima se va deschide și va fi afișată. Dacă doriți să suprascrieți fișierul index și să îl faceți astfel încât să nu fie deschis mai întâi index.htm, ci, de exemplu, fișierul myindex.php, atunci acest lucru se poate face plasând următoarele instrucțiuni în fișierul .htaccess în directorul corespunzător:

DirectoryIndex myindex.php

După ce a primit .htaccess cu un astfel de conținut, serverul web Apache va deschide fișierul în mod implicit myindex.php.

Exemplu: interdicția și permisiunea de a emite o listă

În unele cazuri, este necesar să se afișeze o listă de fișiere dintr-un director (lista de directoare) dacă nu există niciun fișier în directorul care este afișat implicit. Pentru a face acest lucru, trebuie să adăugați următoarea linie la .htaccess:

Opțiuni +Indecși

Fișierul .htaccess trebuie creat în directorul exact în care intenționați să permiteți listarea. Această directivă se va aplica și tuturor subdirectoarelor (acest lucru se realizează prin directiva activată implicit în setările gazdei virtuale AllowOverride All).

Directiva este activată implicit Opțiuni -Indici, caz în care veți primi o eroare HTTP 403.

Dacă codificarea în numele fișierelor nu este afișată corect, utilizați proprietatea Charset pentru a specifica codificarea dorită. De exemplu, pentru a afișa caractere chirilice în codificarea UTF-8, adăugați următoarele instrucțiuni în fișierul .htaccess:

IndexOptions Charset=UTF-8

Exemplu: pagini de eroare personalizate

Exemplu: blocarea accesului de la unele adrese IP

Uneori devine necesar să blocați accesul la site sau la o parte a acestuia de la anumite adrese IP.

În acest caz, trebuie să creați un fișier .htaccess cu directive în directorul dorit. De exemplu, pentru a refuza accesul de la adresa IP 172.16.16.16:

Comanda Permite, Refuză Permite de la All Deny de la 172.16.16.16

Acum când încerci să accesezi un site de la o adresă IP 172.16.16.16 vizitatorul va primi o eroare 403 sau pagina dvs. pentru această eroare.

Specificarea unei părți a adresei în formular 172.16.16 va restricționa accesul de la subrețea 172.16.16/24.

Uneori trebuie să faceți invers și să blocați accesul la site pentru toate IP-urile, cu excepția dvs. (). De exemplu, pentru a permite accesul numai la adresa IP 172.16.16.16, adăugați următoarea declarație în fișierul .htaccess:

Comanda permite, refuză permisiunea de la 172.16.16.16

Puteți găsi documentație mai detaliată în documentația Apache.

Exemplu: interzicerea accesului la unele fișiere

Uneori devine necesar să refuzi accesul la anumite fișiere. De exemplu, la fișierele de configurare care conțin detalii de acces la baze de date, interfețe etc. Să zicem în dosar config.cfg stocați login/parola pentru accesarea bazei de date. Creăm un fișier .htaccess în acest director cu directive:

Comanda permite, refuza Deny de la toți

Acum, dacă un vizitator scrie așa ceva în browser http://www.your_domain.ru//config.cfg, va primi o eroare 403 sau pagina dvs. pentru această eroare.

Exemplu: antet ultima modificare

În unele cazuri, este necesar ca serverul web să emită un antet HTTP Modificat ultima dată. De exemplu, atunci când vă înregistrați resursa pe Yandex, apare eroarea „Date incorecte”. Pentru documentele statice, serverul va returna întotdeauna ultima valoare modificată. Acest lucru este valabil pentru fișierele html. Pentru SSI, serverul va scoate ultima valoare modificată dacă este specificată directiva „XBitHack full” (doar scrieți această linie în .htaccess) și fișierul care este accesat are atributul „executable” pentru setul de grup. În scripturi, ultima modificare este emisă prin alte mijloace. De exemplu, dacă luăm în considerare faptul că scriptul PHP generează cod în mod dinamic, atunci cel mai logic ar fi să dai data și ora curentă ca fiind ultima modificare./>

Aceasta este implementată după cum urmează:

Atentie: echipa antet trebuie executat într-un script PHP înainte ca scriptul să înceapă să trimită text html în browserul utilizatorului.

Fișierul .htaccess este folosit pentru a configura serverul Apache, precum și alte câteva servere. În ciuda extensiei ciudate, este un fișier text simplu care poate fi modificat în orice editor. În acest tutorial ne vom uita la modul în care .htaccess poate fi utilizat în proiectele dumneavoastră.

Fișierul .htaccess folosește același format ca fișierul principal de configurare pentru Apache: httpd.conf. Majoritatea setărilor pot fi utilizate în ambele fișiere.

Setările specificate în fișierul .htaccess al unui director vor avea prioritate față de setările specificate în httpd.conf pentru acel director și subdirectoarele acestuia.

Fișierul .htaccess este uneori numit fișier de configurare dinamică deoarece serverul îl citește de fiecare dată când se face o solicitare către directorul care îl conține. Acest fapt înseamnă că modificările aduse fișierului .htaccess vor avea efect imediat, fără a reporni serverul, spre deosebire de modificările aduse fișierului de configurare principal. Acest lucru înseamnă, de asemenea, că pierdeți puțin performanță atunci când utilizați fișierul .htaccess. Dar este foarte convenabil pentru cazurile în care nu există acces la fișierul de configurare a serverului principal.

Redirecționări și modificări URL

O utilizare populară a fișierului .htaccess este pentru a seta redirecționări sau modificări URL. Această metodă ajută în scopuri SEO prin schimbarea numelui de domeniu sau reconstruirea structurii fișierelor unui proiect sau făcând adrese URL lungi, greu de reținut, simple și ușor de înțeles.

Redirecționări

Redirecționările pot fi foarte simple, de exemplu:

Redirecționare 301 ^old\.html$ http://localhost/new.html

În acest caz, codul de stare HTTP este 301 (mutat permanent) și toate solicitările către old.html sunt redirecționate către new.html . Aceasta utilizează o expresie regulată pentru a determina dacă o adresă URL se potrivește cu o regulă, ceea ce adaugă complexitate construcției regulii, dar dă încredere că adresa URL este corectă. Trebuie să specificați adresa URL completă a resursei către care are loc redirecționarea.

Schimbări

Regula de schimbare poate fi, de asemenea, foarte simplă:

RewriteEngine pe RewriteRule ^old\.html$ new.html

În acest exemplu, are loc o simplă redirecționare de la un fișier la altul, care se realizează în mod transparent, fără a modifica conținutul barei de adrese din browser. Prima directivă, RewriteEngine on , asigură pur și simplu că motorul de rescriere funcționează.

Pentru a actualiza conținutul barei de adrese a browserului vizitatorului, putem folosi indicatorul R de la sfârșitul regulii RewriteRule:

RewriteRule ^old\.html$ http://hostname/new.html

Indicatorul r determină o redirecționare externă, astfel încât adresa URL va corespunde noii pagini. De asemenea, puteți utiliza un cod de stare pentru steag, care va face ca pagina să se reîmprospăteze în browserul vizitatorului.

O posibilă utilizare a redirecționărilor este schimbarea adreselor URL într-o formă mai simplă pentru vizitatori și crawler-uri. Să ne uităm la un exemplu:

RewriteRule ^produse/([^/]+)/([^/]+)/([^/]+) product.php?cat=$1&brand=$2&prod=$3

Această regulă permite vizitatorului să folosească o adresă URL similară produse/plate turnante/tehnică/sl1210, care se va transforma în product.php?cat=plate turnante& brand=technics&prod=sl1210. Parantezele dintre barele oblice din exemplul de expresie regulată efectuează grupări - putem folosi fiecare dintre ele ca $1 , $2 și respectiv $3. Combinația [^/]+ dintre paranteze se potrivește cu orice caracter, cu excepția unei bare oblice, în orice cantitate.

În practică, schimbarea adreselor URL are reguli mult mai complexe decât cele descrise în exemplele noastre, dar vă permit să rezolvați probleme foarte complexe.

Pagina de eroare personalizată

Afișarea unei pagini standard 404 pe un site web nu este practică. Multe site-uri folosesc această caracteristică pentru a prezenta vizitatorului o pagină de eroare care se potrivește cu stilul restului conținutului și oferă informații suplimentare care pot descuraja vizitatorul.

Regula pentru schimbarea unei pagini 404 este foarte asemănătoare cu regula de redirecționare:

ErrorDocument 404 „/404.html”

Dacă apare o eroare 404, va fi afișată pagina specificată. De asemenea, puteți face pagini pentru a afișa alte erori de server.

Restricții privind accesul la anumite resurse

Cu ajutorul fișierului .htaccess putem restricționa accesul la orice fișier sau director. De exemplu, codul:

AuthName „Introduceți numele de utilizator și parola” AuthUserFile /path/to/.htpasswd Necesită un utilizator valid AuthType Basic

Trebuie să fie plasat într-un director care trebuie protejat de accesul public. Directiva AuthName specifică mesajul care va fi afișat în caseta de dialog pentru parolă, iar regula AuthUserFile specifică calea către fișierul .htpasswd. Directiva Require specifică faptul că numai utilizatorii înregistrați pot accesa fișierul.

Pentru a proteja un anumit fișier, trebuie să includeți codul de mai sus într-o directivă , care definește numele fișierului:

AuthName „Introduceți numele de utilizator și parola” AuthUserFile /path/to/.htpasswd Necesită un utilizator valid AuthType Basic

Pentru a utiliza această caracteristică, aveți nevoie de un fișier .htpasswd, care conține o listă de nume de utilizator și parole criptate, separate prin două puncte, pentru accesarea resurselor private. Acest fișier ar trebui să fie stocat într-un director care nu este accesibil din rețea. Există diverse instrumente pentru a genera automat un astfel de fișier, deoarece parola trebuie să fie stocată în formă criptată.

Blocăm accesul anumitor vizitatori

O altă utilizare a fișierului .htaccess este de a bloca rapid și ușor toate solicitările de la o anumită adresă IP sau agenți. Trebuie doar să adăugați următoarele reguli în fișierul .htaccess:

Comanda permite, refuza refuza de la 192.168.0.1 permite de la toți

Directiva order îi spune serverului Apache în ce ordine să ia în considerare directivele allow/deny. În exemplu, directiva allow este evaluată mai întâi, urmată de deny. Regula de permis de la toate este luată în considerare mai întâi (în ciuda faptului că este definită în fișier după regula de refuzare) și toate adresele IP sunt permise. Apoi, dacă adresa IP a clientului se potrivește cu cea specificată în directiva deny, atunci accesul este blocat. Puteți bloca accesul la o serie de adrese IP specificând, de exemplu, 192.168 .

Pentru a bloca accesul la anumiți agenți, puteți folosi alte reguli:

RewriteCond %(HTTP_USER_AGENT) ^OrangeSpider RewriteRule ^(.*)$ http://%(REMOTE_ADDR)/$

În acest exemplu, orice client al cărui șir HTTP_USER_AGENT începe cu OrangeSpider (bot rău) va fi redirecționat către adresa de la care provine. Expresia regulată se potrivește cu orice caracter (.) din orice număr (*) și variabila %(REMOTE_ADDR) este folosită pentru adresă. Steagul l indică serverului Apache că această regulă este ultima pentru client și nu trebuie efectuate alte operațiuni pe ea.

Specificați modul de ieșire pentru IE

Pe lângă controlul modului în care serverul răspunde la anumite solicitări, putem influența browserele utilizatorilor, cum ar fi să spunem IE un mecanism de redare specific. Puteți utiliza modulul mod_headers dacă este prezent pentru a seta antetul X-UA-Compatible:

Set antet X-UA-Compatibil „IE=Edge”

Adăugarea acestei linii la fișierul .htaccess va instrui IE să folosească cel mai bun mod de ieșire disponibil. De asemenea, putem evita folosirea acestui antet pentru fișierele în care nu este necesar folosind regula :

Antet dezactivat Compatibil X-UA

Activați stocarea în cache

Memorarea în cache este foarte ușor de configurat și face ca site-ul să se încarce mai rapid. Prin setarea unei date de reîmprospătare pentru resursele care se modifică rar, putem preveni descărcările repetate ale porțiunilor de conținut care rămân aceleași.

De exemplu:

ExpiresActive pe ExpiresByType imagine/gif „acces plus 1 lună” ExpiresByType imagine/png „acces plus 1 lună” ExpiresByType imagine/jpg „acces plus 1 lună” ExpiresByType image/jpeg „acces plus 1 lună” ExpiresByType video/ogg „acces plus 1 luna" ExpiresByType audio/ogg "acces plus 1 lună" ExpiresByType video/mp4 "acces plus 1 lună" ExpiresByType video/webm "acces plus 1 lună"

Puteți adăuga reguli ExpiresByType pentru orice tip de conținut. Directiva ExpiresActive on permite pur și simplu generarea antetului de expirare al resursei. Această directivă depinde de prezența modulului mod_expires pe serverul Apache.

Permite compresia

O altă modalitate de a influența performanța resurselor este utilizarea compresiei:

FilterDeclare COMPRESS FilterProvider COMPRESS DEFLATE resp=Tip de conținut $text/html FilterProvider COMPRESS DEFLATE resp=Tip de conținut $text/css FilterProvider COMPRESS DEFLATE resp=Tip de conținut $text/javascript FilterChain COMPRESS FilterProtocol COMPRESS DEFLATE modificare=da;

Această schemă de compresie funcționează pe versiunile noi de Apache (2.1+) cu modulul instalat mod_filter. Utilizează algoritmul DEFLATE pentru a comprima conținutul. În exemplu, specificăm text/html , text/css și text/javascript ca tipuri de resurse care vor fi comprimate.

O definiție de filtru începe cu o directivă FilterDeclare cu opțiunea COMPRESS. Apoi listează tipurile de conținut cărora li se va aplica filtrul. Regula FilterChain îi spune serverului să construiască un lanț pe baza unei liste de reguli FilterProvider. Directiva FilterProtocol vă permite să specificați opțiunile care sunt utilizate de filtru în timpul execuției. Este necesar să specificați opțiunile change=yes (conținutul poate fi modificat de filtru (în exemplul nostru - comprimat)) și byteranges=no (filtrul poate fi folosit doar pe fișiere complete).

Versiunile mai vechi de Apache folosesc modulul mod_deflate pentru a configura compresia DEFLATE. Există mai puține opțiuni pentru controlul filtrului, dar regulile sunt mai simple:

SetOutputFilter DEFLATE AddOutputFilterByType DEFLATE text/html text/css text/javascript

Exemplul setează algoritmul de compresie folosind regula SetOutputFilter și determină tipurile de fișiere de conținut pentru filtru folosind regula AddOutputFilterByType.

De obicei, serverul folosește unul dintre modulele descrise, în funcție de versiunea serverului Apache. De obicei, știți ce modul va fi utilizat. Dar dacă creați un fișier htaccess generic care poate fi utilizat pe diferite servere, atunci puteți include ambele seturi de reguli în el folosind directiva . Astfel, se vor folosi regulile necesare și se va putea evita generarea unei erori 500 dacă fișierul de configurare conține reguli pentru modulele dezinstalate. De asemenea, trebuie să rețineți că atunci când plasați servere pe o găzduire care acceptă un număr mare de site-uri pe o unitate de procesor, compresia poate fi dezactivată pentru a nu crea o încărcare mare.

Concluzie

Acest tutorial acoperă cele mai frecvent utilizate utilizări ale fișierului htaccess. Informațiile furnizate aici sunt o introducere la un subiect foarte popular. Există multe alte opțiuni și configurații de explorat și de profitat.

.htaccess(cu un punct la începutul numelui) este un fișier configurator pentru serverele Apache, care face posibilă configurarea serverului în directoare (foldere) separate fără a oferi acces la fișierul principal de configurare (apache/conf/httpd.conf) . De exemplu, setați drepturi de acces la fișierele dintr-un director, schimbați numele fișierelor index, gestionați în mod independent erorile Apache, redirecționând vizitatorii către pagini speciale de eroare. .htaccess este un document text obișnuit, a cărui extensie este htaccess. Acest fișier se află de obicei în rădăcina site-ului, dar puteți crea fișiere .htaccess suplimentare pentru diferite directoare ale site-ului dvs.

Mod_rewrite- un modul folosit de serverele web pentru a converti URL-uri.

Dacă doriți să înregistrați toate operațiunile efectuate folosind mod_rewrite, puteți activa acest lucru cu următoarea intrare în httpd.conf:

RewriteLog /usr/local/apache/logs/mod_rewrite.log RewriteLogLevel 1

Directivele modulului Mod_rewrite

Opțiunile cele mai frecvent utilizate

%(REQUEST_URI) Șir de solicitare (fără nume de domeniu și parametri GET), exemplu „/server/htaccess/”
%(HTTP_HOST) Nume de domeniu, de exemplu „max22.ru”
%(QUERY_STRING) șir de parametri GET

Opțiuni pentru implementarea unei redirecționări folosind fișierul .htaccess

  1. Redirecționare simplă:
    Redirecționează 301 / http://www.domainname.ru/ sau redirecționează /secret http://www.site.ru/nosecret sau # folosind expresia regulată RedirectMatch 301 .* http://www.site.ru/? .htaccess sau httpd.conf pentru Apache. Primul „/” înseamnă că totul de la nivelul superior al site-ului, inclusiv toate subdirectoarele, va fi redirecționat (nu uitați să puneți ultimul „/”). Dacă doriți să redirecționați doar pagina, păstrând PR-ul paginii vechi, puteți face acest lucru:

    Redirecționare 301 /old/old.htm http://www.you.ru/new.htm unde:
    /old/old.htm - calea și numele paginii vechi
    http://www.you.com/new.htm - cale nouă și nume nou al paginii mutate

  2. Redirecționați către orice pagină după IP-ul utilizatorului sau când solicitați o anumită pagină (precum și după masca de nume).
    Dacă utilizatorul are ip 192.152.37.125, atunci va fi redirecționat către pagina user.php: SetEnvIf REMOTE_ADDR 192.152.37.125 REDIR="redir" RewriteCond %(REDIR) redir RewriteRule ^/$ /user.php
  3. Redirecționați atunci când solicitați anumite fișiere. Dacă sunt solicitate fișiere a căror extensie nu este specificată în fișierul .htaccess (gif și jpg), atunci redirecționarea urmează: RewriteEngine On RewriteRule !.(gif|jpg)$ index.php
  4. Folosind mod_rewrite:
    Opțiuni +FollowSymLinks RewriteEngine on RewriteCond %(HTTP_HOST) ^yourdomain\.ru RewriteRule ^(.*)$ http://www.yourdomain.ru/$1
  5. Redirecționare cu expresie regulată:
    RedirectMatch 301 (.*) http://www.yourdomain.ru$1 Înregistrat în fișierul .htaccess. (.*) RedirectMatch se potrivește de fapt cu modelele de expresie regulată după numele domeniului. Prin urmare, nu este posibil să se potrivească modelul de pe ^/yourdomain.ru. Cu toate acestea, puteți converti pagini folosind extensia .html în fișiere cu același nume, dar cu o extensie .php: RedirectMatch 301 (.*)\.html$ http://www.yourdomain.ru$1.php Dacă aveți nevoie pentru a face o redirecționare diferită pentru pagini individuale, puteți utiliza următoarele: RedirectMatch Permanent ^/html/resources.html$ http://www.newdomain.com/resources.php RedirectMatch Permanent ^/html/other_page.html$ http: //www.newdomain.com /other_page.php RedirectMatch Permanent ^/(.*)$ http://www.newdomain.com/ " RedirectMatch permanent„ este echivalentul „RedirectMatch 301”, linia cu „*(Wildcard)” ar trebui să fie ultima din această listă.
  6. Crearea de adrese URL ușor de citit
    Pentru a converti, de exemplu, www.site.ru/product.php?id=123 în www.site.ru/product/123 după cum urmează: RewriteEngine on RewriteRule ^product/([^/\.]+)/?$ product .php?id=$1 [L] În următorul exemplu, convertim www.site.ru/script.php?product=123 în www.site.ru/cat/product/123/: RewriteRule cat/(.* )/(. *)/$ /script.php?$1=$2
  7. Redirecționare către PHP:
    header("HTTP/1.1 301 mutat permanent"); header ("Locație: http://www.newdomain.ru/newdir/newpage.htm"); Ieșire(); Desigur, trebuie să creați o pagină, când va fi accesată, va apărea Redirecționarea și să o plasați pe server. Și este mai bine să specificați HTTP/1.1 (mai degrabă decât HTTP/1.0 sau HTTP/0.9, care nu acceptă găzduire partajată)
  8. Redirecționează toate fișierele dintr-un folder către un singur fișier.
    De exemplu, nu mai aveți nevoie de secțiunea Super discount a site-ului și doriți să redirecționați toate solicitările în folderul /superdiscount către un singur fișier /hot-offers.php. Pentru a face acest lucru, adăugați următorul cod la .htaccess. RewriteRule ^superdiscount(.*)$ /hot-offers.php
  9. Redirecționează întregul folder, cu excepția unui fișier
    În exemplul următor, toate fișierele din folderul /superdiscount vor fi redirecționate către fișierul /hot-offers.php, CU EXCEPȚIA fișierului /superdiscount/my-ebook.html care ar trebui să fie redirecționat către /hot-to-make-million.html RewriteRule ^superdiscount/my -ebook.html /hot-to-make-million.html RewriteRule ^superdiscount(.*)$ /hot-offers.php
  10. Redirecționează o adresă URL dinamică către un fișier nou.
    Această opțiune este utilă dacă doriți să redirecționați o adresă URL dinamică cu parametri către un fișier static nou. RewriteRule ^article.jsp?id=(.*)$ /latestnews.htm Aceasta este, acum, o solicitare către un fișier precum http://www.kass.ws/article.jsp?id=8632 și/sau http: //www .kass.ws/article.jsp?id=1245 va fi trimis la fișierul http://www.kass.ws/latestnews.htm.
  11. Redirecționare în bloc a fișierelor noi.
    Acum să trecem la cel mai dificil moment, când trebuie să redirecționați o mulțime de adrese URL, de exemplu, după ce vă schimbați CMS-ul. Aici apar imediat o serie de probleme. În primul rând, introducerea tuturor adreselor modificate în fișierul .htaccess va dura mult timp, iar sarcina în sine nu este plăcută. În al doilea rând, prea multe intrări în fișierul .htaccess vor încetini serverul Apache. Și în al treilea rând, atunci când introduceți atât de multe informații, există o mare probabilitate să faceți o greșeală undeva. Prin urmare, cea mai bună cale de ieșire este să angajezi un programator care să-ți scrie o redirecționare dinamică.
    Exemplul de mai jos este scris în PHP, dar poate fi executat și în orice limbă. Să presupunem că ați trecut la un nou sistem de conectare pe site-ul dvs. și toate fișierele care se termină cu vechiul id ar trebui să fie listate. Mai întâi, creăm un tabel în baza de date care conține vechiul id și noua adresă URL pentru redirecționare. old_id INT new_url VARCHAR (255) Apoi scriem codul care va conecta vechile dvs. id-uri cu noi URL-uri
    După aceea, adăugați următoarea linie la .htaccess: RewriteRule ^/product-(.*)_(+).php /redirectold.php?productid=$2 apoi creați un fișier PHP redirectold.php care va accepta 301 redirecționări:

    Acum toate solicitările către vechile dvs. URL-uri vor apela redirectold.php, care va găsi noua adresă URL și va returna un răspuns 301 cu noul dvs. link.

    Redirecționează în funcție de timp

    Când vine vorba de trucuri precum conținutul sensibil la timp, mulți webmasteri încă folosesc scripturi CGI care redirecționează către pagini speciale. Cum se poate face acest lucru prin mod_rewrite?

    Există multe variabile numite TIME_xxx pentru condițiile de redirecționare. În combinație cu mostre lexicografice speciale pentru comparație STRING și =STRING putem efectua redirecționări dependente de timp: RewriteEngine on RewriteCond %(TIME_HOUR)%(TIME_MIN) >0700 RewriteCond %(TIME_HOUR)%(TIME_MIN)<1900 RewriteRule ^foo\.html$ foo.day.html RewriteRule ^foo\.html$ foo.night.html

    Aceasta returnează conținutul foo.day.html atunci când solicitați adresa URL foo.html de la 07:00 la 19:00 și conținutul foo.night.html în orele rămase.

  12. Eliminam toate cererile la inceput "WWW."
    RewriteEngine pe # anunță că vrem să folosim mod_rewrite RewriteCond %(HTTP_HOST) ^www\.(.*) RewriteRule ^/?(.*) http://%1/$1

    Verificăm numele domeniului, dacă începe cu www, atunci regula va funcționa: „totul la http://%1/$1”. Aici %1 este domeniul nostru fără www (luat din condiție), iar $1 este adresa (preluat din regulă în sine).

  13. Eliminam index.php din toate cererile la final. Redirecționați către o pagină fără index.php

    Motoarele de căutare nu acceptă să dubleze paginile. Pentru a evita acest lucru, trebuie să ștergeți (lipiți împreună) pagini precum http://domeniul_dvs./ și http://domeniul_dvs./index.php

    RewriteCond %(THE_REQUEST) ^.*/index.php RewriteRule ^(.*)index.php$ http://%(HTTP_HOST)/$1

  14. Schimbarea extensiei .html pe .php
    Uneori se întâmplă să aveți un site web static, dar aveți nevoie de un fel de script PHP pentru a lucra la el. Pentru a face acest lucru, trebuie să spuneți serverului să trateze această pagină ca pe un fișier php. Aplicația AddHandler/x-httpd-php .html Această tehnică poate fi utilizată pentru alte extensii de fișiere: Aplicația AddHandler/x-httpd-php .xml Aplicația AddHandler/x-httpd-php .asp

Interzicerea accesului la un anume director

  1. for all la toate fișierele dintr-un director: deny from all
  2. la un anumit fișier: nega de la toti
  3. by user ip: order deny, allow deny from all allow from 192.152.37.125 Accesul la acest director va fi permis numai utilizatorului cu ip 192.152.37.125.

    Și dacă doriți, dimpotrivă, să interziceți utilizatorilor IP individuali accesul la site-ul dvs., atunci vom scrie următoarele rânduri:

    comanda permite, refuza permite de la toate refuza de la 192.152.37.125 refuza de la 123.456.177

  4. Directiva Opțiuni -Indexuri interzice afișarea conținutului unui director dacă nu există un fișier index Uneori trebuie să vă asigurați că, dacă nu există niciun fișier în directorul care este afișat implicit, lista fișierelor din director nu este afișată. . Apoi puteți adăuga următoarea linie la .htaccess: Opțiuni -Indexuri În acest caz, în locul unei liste de fișiere din director, vizitatorul va primi o eroare HTTP 403 - acces interzis.
  5. Interziceți accesul la fișierele cu mai multe tipuri de extensii
  6. nega de la toti

    Accesul la fișierele cu extensia *.inc, *.conf și *.cfg este interzis. Deși directiva, implicit, nu funcționează cu expresii regulate, acestea pot fi activate punând caracterul tilde (~) în opțiunile directivei. Sintaxa este următoarea:

    [tilde] [spațiu] [further_all_without_spaces] Pentru a bloca acest acces, scrieți următoarele: RewriteRule ^.htaccess$ - [F] Această regulă este tradusă după cum urmează:
    Dacă cineva încearcă să acceseze fișierul .htaccess, sistemul ar trebui să producă un cod de eroare „Răspuns HTTP de 403” sau „403 Interzis - Nu aveți permisiunea de a accesa /.htaccess pe acest server”.

    Construcția ^.htaccess$ din această expresie regulată înseamnă:
    ^ - ancora începutului liniei
    $ - ancoră de capăt de linie
    . - în expresiile regulate, punctul "." denotă un meta caracter și trebuie să fie scapat cu o bară oblică inversă dacă tot doriți să utilizați punctul real.

    Numele fișierului trebuie să fie poziționat exact între ancorele de început și de sfârșit. Acest lucru va asigura că numai acest nume de fișier și niciunul altul va genera un cod de eroare.
    [F]- un steag special „interzis” (interzis).
    - nu tine cont de cazul literelor.
    - înseamnă „sau următoarea condiție”.

Definiția codificării

Determinarea codificării în care serverul „trimite” fișiere

Opțiuni AddDefaultCharset windows-1251: KOI8-R, UTF-8, Windows-1251

Determinarea codificării fișierelor descărcate

CharsetSourceEnc windows-1251

Setarea unei parole de director folosind .htaccess

Pentru a seta o parolă pentru un director, puteți utiliza sistemul de autorizare de bază furnizat în serverul web Apache. În directorul la care dorim să restricționăm accesul prin parolă, creați un fișier .htaccess cu următoarele directive: AuthType Basic AuthName "Some Name" AuthUserFile /www/some_login/www/htdocs/some_dir/.htpasswd require valid-user Path / www/some_login/ www/htdocs/some_dir/.htpasswd indică calea completă către fișierul cu parole de pe discul serverului nostru. Dacă, de exemplu, plasați fișierul .htpasswd (va conține parole) în directorul principal în care accesați când accesați serverul prin FTP, atunci calea către acest fișier va arăta ca /www/some_login/www/htdocs/ some_dir/.htpasswd , unde some_login este datele de conectare. În directiva AuthUserFile specificăm calea absolută către fișierul cu login/parole, pe care o vom crea puțin mai târziu. Dacă creați fișierul .htaccess pe computer, și nu direct pe server folosind un editor de text, acordați o atenție deosebită faptului că .htaccess trebuie transferat prin FTP strict în modul text (ASCII).

Creați un fișier cu parole. Fișierul cu parole trebuie să conțină linii precum login:parolă. Parola trebuie criptată folosind algoritmul MD5. O modalitate de a crea un astfel de fișier este să folosiți programul inclus cu Apache - htpasswd (pe serverul nostru se află în directorul /usr/local/apache/bin, calea completă - /usr/local/apache/bin/htpasswd) .

Să ne uităm la cum să creați un fișier de parolă în shell-ul Unix direct pe server. Să intrăm în shell și să executăm următoarele comenzi:

Htpasswd -mbc .htpasswd user1 7B1safkir - creați un fișier nou .htpasswd, la care adăugăm o intrare pentru utilizatorul user1 cu parola specificată în linia de comandă. htpasswd .htpasswd user2 - adăugați user2 la fișierul .htpasswd existent și introduceți parola manual ca răspuns la solicitarea corespunzătoare din partea programului.

După ce toate conectările au fost create, fișierul trebuie să fie încărcat pe server.

Despre alte moduri de a seta parole pe o pagină

Configurarea propriilor pagini de eroare

Puteți seta propria pagină de eroare după cum urmează: ErrorDocument 404 http://www.site.ru/404.php IE ignoră paginile mai mici de 512 octeți.

Indexarea directoarelor și subdirectoarelor

Pentru a evita indexarea directoarelor și subdirectoarelor de către motoarele de căutare, trebuie să scrieți următoarea linie, de exemplu: DirectoryIndex index.php Această directivă specifică fișierul care va fi apelat la accesarea unui director fără a specifica numele fișierului.

Puteți specifica mai multe pagini de index. Când un director este interogat, ele vor fi căutate în ordinea în care sunt listate în directiva DirectoryIndex. Dacă fișierul index.html nu este găsit, atunci fișierul index.php va fi căutat etc.

DirectoryIndex index.html index.php index.shtml

Personal, prefer să redirecționez din directoarele goale fie către pagina principală a site-ului, fie către altă pagină potrivită. De exemplu, directorul www.site.ru/pic/ poate fi redirecționat către www.site.ru.

Protejarea imaginilor împotriva descărcării

Se întâmplă adesea ca webmasterii să copieze în mod flagrant conținut de pe site-ul tău împreună cu imagini, iar imaginile să fie încărcate de pe propriul tău server. Acest lucru creează trafic inutil, ceea ce duce adesea la o serie de probleme. Cum să te protejezi de astfel de webmasteri și să nu împiedici roboții de căutare să indexeze imagini? Este simplu: RewriteEngine pe RewriteCond %(HTTP_REFERER) . RewriteCond %(HTTP_REFERER) !^http://([^.]+\.)?site\. RewriteCond %(HTTP_REFERER) !google\. RewriteCond %(HTTP_REFERER) !search\?q=cache RewriteCond %(HTTP_REFERER) !msn\. RewriteCond %(HTTP_REFERER) !yahoo\. RewriteCond %(REQUEST_URI) !^/hotlinker\.gif$ RewriteRule \.(gif|jpg|png)$ /hotlinker.gif hotlinker.gif este imaginea care va fi afișată în locul imaginilor reale. Vă recomand să afișați logo-ul și un link către site-ul dvs. în această imagine.

O altă opțiune pentru blocarea accesului la imagini de pe site-uri neautorizate:

SetEnvIfNoCase Referer "^$" local_ref=1 SetEnvIfNoCase Referer "^http://(www\.)?htmlweb\.ru" local_ref=1 SetEnvIfNoCase Referer "^http://(www\.)?images\.yandex\ .ru" local_ref=1 SetEnvIfNoCase Referer "^http://(www\.)?hghltd\.yandex\.com" local_ref=1 Comanda Permite, Respinge Permite de la env=local_ref

Motoarele de căutare și diverse tipuri de crawler-uri creează trafic colosal pe site-ul dvs. Blocul de cod de mai jos vă va permite să refuzați accesul roboților la site.

RewriteCond %(HTTP_USER_AGENT) (Googlebot|Slurp|spider|Twiceler|heritrix| Combine|appie|boitho|e-SocietyRobot|Exabot|Nutch|OmniExplorer| MJ12bot|ZyBorg/1|Ask\ Jeeves|Ask\Jeeves|Boitho|Ask\Jeeves|Boitho|Ask|Ask\Jeeves|Ask\Jeeves| BecomeBot|Clustered-Search-Bot|MSIECrawler|freefind|galaxy|genieknows|INGRID|grub-client| MojeekBot|NaverBot|NetNose-Crawler|OnetSzukaj|PrassoSunner|T-H-U-N-D-E-R-S-T-Voil| fantomBro wser|stealthBrowser |cloakBrowser| fantomCrew \ Browser|Girafabot|Indy\ Library|Intelliseek|Zealbot| Windows\ 95|^Mozilla/4\.05\ \$|^Mozilla/4\.0$) RewriteRule ^(.*)$ - [ F] # RewriteCond %(HTTP_USER_AGENT) ^Mozilla.* RewriteCond %(HTTP_USER_AGENT) ^Opera.* RewriteCond %(HTTP_USER_AGENT) ^Firefox.* RewriteCond %(HTTP_USER_AGENT) ^Netscape.* RewriteRule ^(.*)$ - [L] RewriteRule ^(. *)$ - [F]

Urmărirea apelurilor către fișierul robots.txt

Pentru a avea mai multe informații despre vizitarea motoarelor de căutare, este util să aveți informații detaliate despre accesarea fișierului robots.txt. Pentru a organiza acest lucru, următoarele intrări ar trebui să fie în „.htaccess”: RewriteEngine on Options +FollowSymlinks RewriteBase / RewriteRule ^. robots.txt$ / robot.php?%(REQUEST_URI) Acum, când se solicită fișierul „robots.txt”, RewriteRule va redirecționa vizitatorul (robot) către scriptul robot.php care procesează cererile. În plus, variabila este transmisă scriptului, care va fi procesat în funcție de nevoile dumneavoastră. „REQUEST_URI” specifică numele fișierului solicitat. În acest exemplu este „robots.txt”. Scriptul va citi conținutul „robots.txt” și îl va trimite browserului web sau robotului motorului de căutare. În acest fel, putem număra accesările vizitatorilor și putem păstra fișierele jurnal.

PHPSESSID

Pentru a dezactiva adăugarea PHPSESSID la adresa URL, introduceți următoarele la începutul index.php:

Ini_set("session.use_trans_sid", 0);

Sau scrieți în .htaccess:

Php_flag session.use_trans_sid Dezactivat

Dacă toate acestea vi s-au părut complicate, utilizați un serviciu gata făcut pentru a converti adrese URL dinamice în cele statice folosind htaccess

Directive de stocare în cache

Memorarea în cache pentru toate tipurile de fișiere în funcție de timpul de acces ExpiresActive la ExpiresDefault „acces plus 600 de secunde” Memorarea în cache pentru toate tipurile de fișiere după timpul de modificare ExpiresActive la ExpiresDefault „modificare plus 600 de secunde” Memorarea în cache pentru anumite tipuri de fișiere ExpiresByType text/css „modificare plus 600 de secunde” ExpiresByType imagine/jpeg „modificare plus 600 de secunde” ExpiresByType imagine/gif „modificare plus 600 de secunde” ExpiresByType imagine/x-ico „modificare plus 600 de secunde” ExpiresByType imagine/png „modificare plus 600 de secunde”

Dezactivați memoria cache folosind serverul Apache

Deschideți fișierul de configurare a serverului Apache httpd.confși decomentați următoarele rânduri:

LoadModule expires_module modules/mod_expires.so LoadModule headers_module modules/mod_headers.so ... AddModule mod_expires.c AddModule mod_headers.c

Introduceți următoarele în .htaccess:

# Dezactivează memorarea în cache în acest folder # Necesită ca modulele să fie activate # mod_headers.c și mod_expires.c # # Antetul Cache-Control Antet adăugați Cache-Control „fără stocare, fără cache, trebuie revalidat”# Antetul expiră ExpirăActiv la ExpirăDefault „acum”

Anteturile necesare vor fi transmise automat și nu este nevoie să le scrieți în mod specific în PHP - memoria cache este deja dezactivată!

Descrierea antetului http pentru cache-control cache

Memorarea în cache folosind fișierul .htaccess

# Permite stocarea în cache în acest folder # Necesită ca modulele # mod_headers.c și mod_expires.c să fie activate # ExpiresActiv pe #ExpiresDefault „acces plus 1 oră” #ExpiresDefault „acces plus 10 ani” ExpiresDefault „acces plus 1 lună” ExpiresByType text/cache-manifest „acces plus 0 secunde” ExpiresByType text/html „acces plus 0 secunde” ExpiresByType text/ xml „acces plus 0 secunde” aplicația ExpiresByType/xml „acces plus 0 secunde” aplicația ExpiresByType/json „acces plus 0 secunde” aplicația ExpiresByType/rss+xml „acces plus 1 lună” imaginea ExpiresByType/pictogramă x „acces plus 1 săptămână „ ExpiresByType image/gif „acces plus 1 an” ExpiresByType image/png „acces plus 1 an” ExpiresByType image/jpg „acces plus 1 an” ExpiresByType image/jpeg „acces plus 1 an” ExpiresByType video/ogg „acces plus 1 an „ ExpiresByType audio/ogg „acces plus 1 an” ExpiresByType audio/mp3 „acces plus 1 an” ExpiresByType video/mp4 „acces plus 1 an” ExpiresByType video/webm „acces plus 1 an” ExpiresByType text/x-component „acces plus 1 lună" ExpiresByType font/truetype "acces plus 1 an" ExpiresByType font/opentype "acces plus 1 an" ExpiresByType aplicație/x-font-woff "acces plus 1 an" ExpiresByType imagine/svg+xml "acces plus 1 lună" ExpiresByType application/vnd.ms-fontobject „acces plus 1 an” ExpiresByType text/css „acces plus 2 luni” ExpiresByType application/javascript „acces plus 2 luni” ExpiresByType text/javascript „acces plus 2 luni” Antet adăugați Cache-Control „public”

Memorarea în cache a fișierelor javascript folosind fișierul .htaccess

ExpirăDefault „acces plus 3 zile”

Fii atent când memorezi cache pentru că... atunci când un fișier este schimbat, utilizatorul poate primi o nouă versiune numai după 3 zile!

Cum să forțezi paginile html să proceseze codul php?

Scrieți următoarele rânduri în fișierul dvs. .htaccess: RemoveHandler .php .htm .html AddHandler application/x-httpd-php .php .htm .html

Cum să găzduiești mai multe site-uri web pe o singură găzduire virtuală?

Pentru a găzdui două sau mai multe site-uri web pe o găzduire partajată, în ciuda numărului de domenii care ți-a fost alocat de planul tău tarifar, trebuie să scrii următoarele rânduri în fișierul „.htaccess”:

RewriteEngine On RewriteRule ^newdirectory/ - [L] RewriteCond %(HTTP_HOST) (www.)?newdomain.ru RewriteRule (.*) newdirectory/$1 [L]

Unde:
newdirectory/ - folderul în care va fi localizat al doilea site
newdomain.ru - domeniul pentru care redirecționăm

Vă rugăm să rețineți că în acest caz veți avea un singur cont de e-mail. Acestea. daca ai o cutie [email protected], apoi după conectarea domeniului newdomain.ru la casetă [email protected] apare al doilea nume - [email protected]. Și la crearea oricărei căsuțe poștale noi (de exemplu, informații), i se atribuie automat două nume - [email protected]Și [email protected].

Căutarea paginilor în mai multe directoare

Uneori este necesar să se permită serverului web să caute pagini în mai multe directoare.

RewriteEngine pe # mai întâi, să încercăm să-l găsim în locația specificată/... # ...și dacă este găsit, finalizați căutarea: RewriteCond /your/docroot/dir1/%(REQUEST_FILENAME) -f RewriteRule ^(.+) /your/ docroot/dir1/$1 [L] # în al doilea rând, să încercăm să-l găsim în pub/... # ...și dacă este găsit, finalizați căutarea: RewriteCond /your/docroot/dir2/%(REQUEST_FILENAME) - f RewriteRule ^( .+) /your/docroot/dir2/$1 [L] # altfel continuați pentru alte directive RewriteRule ^(.+) -

Gazde virtuale ale utilizatorului

Dacă doriți să furnizați adrese www.subdomain.domain.ru pentru paginile utilizatorului, puteți utiliza următorul set de reguli pentru a converti http://www.subdomain.domain.ru/path în calea internă /home/subdomain/path :

RewriteEngine on RewriteCond %(HTTP_HOST) ^www\.[^.]+\.ru$ RewriteRule ^(.+) %(HTTP_HOST)$1 [C] RewriteRule ^www\.([^.]+)\.ru( .*) /acasă/$1$2

Fișierele devin deteriorate atunci când sunt încărcate pe server

Dacă atunci când transferați fișiere prin formulare (cu specificarea enctype="multipart/form-data") datele binare sunt deteriorate, adăugați următoarea directivă la /cgi-bin/.htaccess: CharsetRecodeMultipartForms Off.

Eroare la încărcarea fișierelor SWF.
Erori la accesarea paginilor care conțin cuvinte cheie
tastați $_REQUEST

Acest lucru se poate întâmpla din cauza modulului instalat în Apache. În mod implicit, blochează liniile cu argumente SQL și alte comenzi potențial periculoase în interogări.

Mesaje de eroare posibile:

Interzis

Nu aveți permisiunea de a accesa /adm/index.php pe acest server. În plus, a fost întâlnită o eroare 404 Not Found în timp ce încercați să utilizați un ErrorDocument pentru a gestiona cererea.

Solicitarea nu este sigură și a fost respinsă.

Adăugați la .htaccess SecFilterEngine dezactivat SecFilterScanPOST dezactivat Pentru mesaj:

„POST /wp-admin/async-upload.php HTTP/1.1” 406.354 „-” „Shockwave Flash”

Puteți elimina protecția numai pentru încărcarea fișierelor pe server: SecFilterEngine dezactivat SecFilterScanPOST dezactivat

Este optim să eliminați protecția doar din folderul în care este necesară, fără a elimina protecția de pe întregul site.

Variabile de server

Acestea sunt variabile ale formei %(NAME_OF_VARIABLE)

Unde NAME_OF_VARIABLE poate fi un șir luat din următoarea listă:

Aceste variabile corespund exact antetelor HTTP MIME numite similar și variabilelor serverului Apache sau câmpurilor Unix system struct tm. Cele care sunt speciale pentru mod_rewrite includ:

IS_SUBREQ- Va conține textul „adevărat” dacă interogarea este în prezent executată ca subinterogare, „fals” în caz contrar. Subinterogările pot fi generate de module care trebuie să se ocupe de fișiere sau URI-uri suplimentare pentru a-și îndeplini propriile sarcini.

API_VERSION- Aceasta este versiunea API-ului pentru modul Apache (interfața internă dintre server și modul) în versiunea curentă a serverului, așa cum este definită în include/ap_mmn.h. Versiunea API a modulului corespunde versiunii Apache utilizată (pentru versiunea Apache 1.3.14, de exemplu, este 19990320:10), dar aceasta este de interes în principal pentru autorii modulelor.

CEREREA- Șirul complet de solicitare HTTP trimis de browser către server (de exemplu, „GET /index.html HTTP/1.1”). Nu include niciun antet suplimentar trimis de browser.

REQUEST_URI- Resursa solicitată în linia de solicitare HTTP.

REQUEST_FILENAME- Calea completă în sistemul de fișiere server către fișierul sau scriptul corespunzător acestei solicitări.

Note:

  1. Variabilele SCRIPT_FILENAME și REQUEST_FILENAME conțin aceleași valori, adică valoarea câmpului nume de fișier al structurii interne request_rec a serverului Apache. Primul nume este pur și simplu numele binecunoscut al variabilei CGI, în timp ce al doilea este o copie persistentă a REQUEST_URI (conținând valoarea câmpului uri al structurii request_rec).
  2. Există un format special: %(ENV:variable) unde variabil poate fi orice variabilă de mediu. Acest lucru este căutat în structurile interne ale Apache și (dacă nu acolo) prin apelarea getenv() din procesul serverului Apache.
  3. Există un format special: %(HTTP:header) unde titlu poate fi orice nume de antet MIME HTTP. Acest lucru este căutat în cererea HTTP. Exemplu: %(HTTP:Proxy-Connection) Valoarea antetului HTTP „ Proxy-Connection:”.
  4. Există un format special de interogări anticipate %(LA-U:variabilă) care sunt făcute de o subinterogare internă (bazată pe URL) pentru a determina valoarea finală variabil. Utilizați acest lucru atunci când doriți să utilizați o variabilă pentru conversii care este de fapt definită mai târziu într-o anumită fază a API și, prin urmare, nu este disponibilă în acea etapă. De exemplu, atunci când doriți să faceți conversia conform variabilei REMOTE_USER din contextul serverului (fișier httpd.conf) ar trebui să utilizați %(LA-U:REMOTE_USER) deoarece această variabilă este setată în fazele de autorizare care merg după Faza de traducere a URL-ului în care funcționează mod_rewrite. Pe de altă parte, deoarece mod_rewrite funcționează într-un context de director (fișier .htaccess) prin faza de reparare a API-ului și pentru că fazele de autorizare vin înainte de această fază, puteți utiliza pur și simplu %(REMOTE_USER) acolo.
  5. Există un format special: %(LA-F:variable) care creează o subinterogare internă (pe bază de nume de fișier) pentru a determina valoarea finală variabil. Acesta este practic același cu formatul LA-U de mai sus.

Pagina de pornire fără duplicare

De obicei, codul paginii de pornire este localizat fizic în fișierul index.html sau index.php, dar site-ul ar trebui să se deschidă prin oricare dintre solicitările: site-ul tău.ru, site-ul tău.ru/index.html, www.site-ul tău.ru și www. .yoursite.ru/index .html. Dar pentru motoarele de căutare, acestea sunt patru URL-uri diferite! Dacă nu configurați corect .htaccess, motorul de căutare va adăuga patru pagini identice la indexul său. Acesta este un semn al unui site de calitate scăzută. Puteți evita această problemă folosind următorul cod în .htaccess:

Opțiuni +FollowSymLinks RewriteEngine on RewriteCond %(HTTP_HOST) ^yoursite.ru RewriteRule (.*) http://www.yoursite.ru/$1 RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.html\ HTTP/ RewriteRule ^index\.html$ http://www.yoursite.ru/

Toate paginile duplicate vor fi îmbinate cu un cod de redirecționare către pagina principală - http://www.yoursite.ru/.

Duplicați pagini fără bară oblică la sfârșitul adresei URL

Pentru a preveni situația cu indexarea paginilor www.yoursite.ru/about și www.yoursite.ru/about/ ca fiind diferite, punem următorul cod:

Paginile fără bară oblică vor fi redirecționate către cele „slash”.

RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_URI) !(.*)/$ RewriteRule ^(.*)$ /$1/

Salvarea (descărcarea) fișierelor în loc de deschidere

Mulți oameni au văzut cum, atunci când încearcă să descarce o arhivă cu extensia .rar, browserul o deschide ca text simplu format dintr-un amestec de caractere. Aceasta înseamnă că serverul site-ului nu este configurat să forțeze salvarea tipurilor de fișiere care nu ar trebui să fie deschise în browser.

Aplicație AddType/octet-stream .rar .doc .mov .avi .pdf .xls .mp4

Comprimarea paginilor trimise

SetOutputFilter DEFLATE Antet dezactivat ETag FileETag Nici unul

Setarea forțată a unei bare oblice

Următorul cod va adăuga întotdeauna o bară oblică la adresa URL a site-ului dvs., ceea ce este excelent pentru SEO site-ului.

RewriteCond %(REQUEST_URI) /+[^\.]+$ RewriteRule ^(.+[^/])$ %(REQUEST_URI)/

Utilizarea fonturilor pe mai multe domenii pentru FireFox

Când utilizați fonturi încorporate, Firefox nu vă permite să le luați de pe site-uri externe. Următorul cod pentru fișierul .htaccess vă va permite să ocoliți această limitare.

#Înlocuiește domeniul tău.com cu adresa blogului tău Set antet Access-Control-Allow-Origin „http://yourdomain.com”

Executați PHP în fișierele JavaScript

Când dezvoltați cod JavaScript, uneori trebuie să utilizați PHP în fișiere .js, de exemplu pentru a prelua date dintr-o bază de date.

Aplicație AddType/x-httpd-php .js AddHandler x-httpd-php5 .js Aplicația SetHandler/x-httpd-php

Extindeți fișierele robots.txt, sitemap.xml etc. la folderele de domeniu

# Dacă există un fișier solicitat de la rădăcina site-ului, în folderul domeniului, atunci redirecționați-l acolo RewriteCond %(DOCUMENT_ROOT)/domain/%(HTTP_HOST)/root%(REQUEST_URI) -f RewriteRule ^(.*)$ /domain/%(HTTP_HOST )/root/$1 [L]

Blocarea agenților de utilizator prin .htaccess

Dacă vă confruntați cu problema că unele tipuri de User Agent vă încarcă serverul cu solicitări inutile, atunci puteți scăpa de ele adăugând următoarele linii la .htaccess:

SetEnvIfNoCase User-Agent "^Black Hole" bad_bot SetEnvIfNoCase User-Agent "^Titan" bad_bot SetEnvIfNoCase User-Agent "^WebStripper" bad_bot SetEnvIfNoCase User-Agent "^NetMechanic" bad_bot User-SetEnvIfNoCase "C gent „^EmailCollector” bad_bot SetEnvIfNoCase User-Agent „^EmailSiphon” bad_bot SetEnvIfNoCase User-Agent „^WebBandit” bad_bot SetEnvIfNoCase User-Agent „^EmailWolf” bad_bot SetEnvIfNoCase User-Agent „^Cof_Case User-Agent”^IfNoCase Verificați" bad_bot SetEnvIfNoCase User-Agent "^Crescent" bad_bot SetEnvIfNoCase User-Agent "^Wget" bad_bot SetEnvIfNoCase User-Agent "^SiteSnagger" bad_bot SetEnvIfNoCase User-Agent "^ProWebWalker" bad_botase User-SetEnvIfNoCase "^Cheese-Agent" -Agent" ^Teleport" bad_bot SetEnvIfNoCase User-Agent "^TeleportPro" bad_bot SetEnvIfNoCase User-Agent "^MIIxpc" bad_bot SetEnvIfNoCase User-Agent "^Telesoft" bad_bot SetEnvIfNoCase User-Agent "^NobSite-ul web SetEnvIfNoCase User-Agent"^ SetEnvIfNoCase User-Agent "^moget/2.1" bad_bot SetEnvIfNoCase User-Agent "^WebZip/4.0" bad_bot SetEnvIfNoCase User-Agent "^WebSauger" bad_bot SetEnvIfNoCase User-Agent "^WebCopier" bad_bot Set "^EnvNoCase User-Agent" Caz User-Agent „^Mister PiX” bad_bot SetEnvIfNoCase User-Agent „^WebAuto” bad_bot SetEnvIfNoCase User-Agent „^TheNomad” bad_bot SetEnvIfNoCase User-Agent „^WWW-Collector-E” bad_bot SetEnvIfNoCase „^Nobot SetAvIfNoCase User-” User-Agent "^libWeb/clsHTTP" bad_bot SetEnvIfNoCase User-Agent "^asterias" bad_bot SetEnvIfNoCase User-Agent "^httplib" bad_bot SetEnvIfNoCase User-Agent "^turingos" bad_bot SetEnvIfNoCase User-Agent "^Cspanner" User-Agent "^Cspanner" „^InfoNaviRobot” bad_bot SetEnvIfNoCase User-Agent „^Harvest/1.5” bad_bot SetEnvIfNoCase User-Agent „^Bullseye/1.0” bad_bot SetEnvIfNoCase User-Agent „^Mozilla/4.0 (compatibil; Punct ochit punct lovit; Windows 95)" bad_bot SetEnvIfNoCase User-Agent "^Crescent Internet ToolPak HTTP OLE Control v.1.0" bad_bot SetEnvIfNoCase User-Agent "^CherryPickerSE/1.0" bad_bot SetEnvIfNoCase User-Agent "^CherryPicker /1.0 User-Afgent "^CherryPicker/1.0" WebBandit/3.50" bad_bot SetEnvIfNoCase User-Agent "^NICERsPRO" bad_bot SetEnvIfNoCase User-Agent "^Microsoft URL Control - 5.01.4511" bad_bot SetEnvIfNoCase User-Agent "^DittoSpyder" SetEnvIfNoCase User-Agent"^Env Utilizator IfNoCase- Agent „^WebmasterWorldForumBot” bad_bot SetEnvIfNoCase User-Agent „^SpankBot” bad_bot SetEnvIfNoCase User-Agent „^BotALot” bad_bot SetEnvIfNoCase User-Agent „^lwp-trivial/1. 34" bad_bot SetEnvIfNoCase User-Agent "^lwp-trivial" bad_bot SetEnvIfNoCase User-Agent "^Wget/1.6" bad_bot SetEnvIfNoCase User-Agent "^BunnySlippers" bad_bot SetEnvIfNoCase User-Agent "^EnvIfNoCase User-Agent0 fNoCase User-Agent „^URLy Warning” bad_bot SetEnvIfNoCase User-Agent „^Wget/1.5.3” bad_bot SetEnvIfNoCase User-Agent „^LinkWalker” bad_bot SetEnvIfNoCase User-Agent „^cosmos” bad_bot SetEnvIfNoCase „^Set User-CVAgentNoCase” User-Agent „^hloader” bad_bot SetEnvIfNoCase User-Agent „^humanlinks” bad_bot SetEnvIfNoCase User-Agent „^LinkextractorPro” bad_bot SetEnvIfNoCase User-Agent „^Offline Explorer” bad_bot SetEnvIfNoCase User-Agent „^Mata User-Agent”-Cf_NoCase "^LexiBot" bad_bot SetEnvIfNoCase User-Agent "^Web Image Collector" bad_bot SetEnvIfNoCase User-Agent "^The Intraformant" bad_bot SetEnvIfNoCase User-Agent "^True_Robot/1.0" bad_bot SetEnvIfNoCase User-User "^Crue_AgentNoCase" gent „^BlowFish/1.0” bad_bot SetEnvIfNoCase User-Agent „^JennyBot” bad_bot SetEnvIfNoCase User-Agent „^MIIxpc/4.2” bad_bot SetEnvIfNoCase User-Agent „^BuiltBotTough” bad_bot SetEnvIfNoCase User-Power1 Utilizator vIfNoCase- Agent „^BackDoorBot/1.0” bad_bot SetEnvIfNoCase User-Agent „^toCrawl/UrlDispatcher” bad_bot SetEnvIfNoCase User-Agent „^WebEnhancer” bad_bot SetEnvIfNoCase User-Agent „^TightTwatBot” SetEnvIfNoCase User-Agent „^EnvIfNoCase” fNoCase User-Agent "^VCI WebViewer VCI WebViewer Win32" bad_bot SetEnvIfNoCase User-Agent "^VCI" bad_bot SetEnvIfNoCase User-Agent "^Szukacz/1.4" bad_bot SetEnvIfNoCase User-Agent "^QueryN Metasearch" bad_bot Data User-IfNoCase SetEnv-IfNoCase "^Szukacz/1.4" SetEnvIfNoCase User-Agent „^Openfind” bad_bot SetEnvIfNoCase User-Agent „^Xenu’s Link Sleuth 1.1c” bad_bot SetEnvIfNoCase User-Agent „^Xenu”s” bad_bot SetEnvIfNoCase User-Agent „^Zase” User-Agent „^Zase” RepoMonkey Bait & Tackle/v1.01" bad_bot SetEnvIfNoCase User-Agent "^RepoMonkey" bad_bot SetEnvIfNoCase User-Agent "^Zeus 32297 Webster Pro V2.9 Win32" bad_bot SetEnvIfNoCase User-Agent "^NobotCase ProEnv User-Agent" ^EroCrawler" bad_bot SetEnvIfNoCase User-Agent "^LinkScan/8.1a Unix" bad_bot SetEnvIfNoCase User-Agent "^Keyword Density/0.9" bad_bot SetEnvIfNoCase User-Agent "^Kenjin Spider" bad_bot SetEnvIfNoCase "CvIfNoCase User-Agent" Comanda Allow, Deny Permite de la toate Deny from env=bad_bot

Redirecționare după limbă

RewriteEngine on RewriteCond %(HTTP:Accept-Language) (ru) RewriteRule .* WHERE [L]

Protejarea imaginilor de descărcare prin link-uri de pe alte site-uri

Inclusiv tranzițiile fără REFERER, de ex. când adresa este indicată în linia browserului.

RewriteEngine on RewriteCond %(HTTP_REFERER) !^$ RewriteCond %(HTTP_REFERER) !^http(s)?://(www\.)?yourdomain.com RewriteRule \.(jpg|jpeg|png|gif)$ WHERE_SEND

RewriteEngine on RewriteCond %(HTTP_REFERER) !^http(s)?://(www\.)?yourdomain.com RewriteRule \.(jpg|jpeg|png|gif)$ WHERE_TO_SEND

Blocați utilizatorii cu un anume referitor

Dacă nu doriți ca utilizatorii să treacă de pe anumite site-uri pe ale dvs., puteți bloca acest lucru.

RewriteEngine pe RewriteCond %(HTTP_REFERER) bannedurl1.com RewriteCond %(HTTP_REFERER) bannedurl2.com RewriteRule .* - [F]

bannedurl1.com și bannedurl2.com sunt exemple de site-uri interzise.

Limitarea dimensiunii fișierului de încărcare PHP, dimensiunea maximă a cererii și timpul maxim de execuție a scriptului

Dimensiunea fișierului de descărcare:

Php_value upload_max_filesize 15M

Dimensiunea maximă a cererii pentru încărcare în PHP:

Php_value post_max_size 10M

Timp de execuție a scriptului:

Php_value max_execution_time 240

Timpul pentru ca scriptul să analizeze datele introduse:

Php_value max_input_time 180

Specificați modul de ieșire pentru IE

Setarea antetului X-UA-Compatible:

Set antet X-UA-Compatibil „IE=Edge”

Setarea variază: Accept-Encoding

Pentru optimizarea motoarelor de căutare și reducerea timpului de încărcare a paginii, Google recomandă setarea antetului Vary: Accept-Encoding

Antetul de răspuns HTTP/1.1 Vary permite serverului să indice că o resursă stocată în cache poate fi utilizată fără a verifica numai dacă anteturile specificate în Vary se potrivesc cu anteturile cererii. Valori: Accept-Encoding, Host, User-Agent, Accept-Language.

Adăugați antet Variați: Acceptare-Codificare

Fișier imagine comun pentru toate domeniile (aliasuri globale)

Alias ​​/javascripts /usr/share/javascript/ Opțiuni FollowSymLinks MultiViews Plasați un fișier comun, de exemplu, icon.png în directorul /usr/share/javascript/ În fișierul /etc/javascript-common/javascript-common.conf și adăugați linia: Alias ​​​​/apple-touch-icon -precomposed.png /usr/ share/javascript/icon.png

Când descărcați .doc, fișierele .docx se deschid în browser cu o codificare de neînțeles

Dacă deschideți fișiere .doc, .docx într-un browser cu o codificare de neînțeles și doriți ca fișierul să fie salvat și să nu fie deschis când faceți clic stânga, atunci trebuie să scrieți în .htaccess:

Aplicație AddType/descărcare forțată doc Aplicație AddType/descărcare forțată docx Aplicație AddType/descărcare forțată xls Aplicație AddType/descărcare forțată xlsx

Redirecționează către conexiune https securizată

Dacă utilizați https și doriți ca toți utilizatorii să fie redirecționați către acesta, atunci următorul cod vă va ajuta:

RewriteEngine On RewriteCond %(HTTPS) !on RewriteRule (.*) https://%(HTTP_HOST)%(REQUEST_URI)

Acces dacă cookie-ul este setat folosind htaccess

Dacă autentificarea dvs. pe site este admin și este setată într-un cookie cu numele de conectare, puteți bloca cu ușurință accesul la orice director pentru străini. Pentru a face acest lucru, creați un fișier .htaccess în acest director (dosar) cu următorul conținut:

RewriteEngine On RewriteCond %(HTTP_COOKIE) !login=admin RewriteRule .* http://%(HTTP_HOST)/

Folosind același principiu, puteți închide site-ul pentru întreținere pentru toată lumea, cu excepția administratorului.

Accesați anteturile „If-Modified-Since” și „If-None-Match” pentru a implementa răspunsul http 304

Dacă PHP nu este instalat ca modul Apache, atunci pentru a accesa anteturile „If-Modified-Since” și „If-None-Match”, trebuie să plasați următorul fișier .htaccess în directorul rădăcină al site-ului web:

RewriteEngine On RewriteRule .* - RewriteRule .* -

După aceasta, anteturile necesare vor fi disponibile ca $_SERVER["HTTP_IF_MODIFIED_SINCE"] și $_SERVER["HTTP_IF_NONE_MATCH"].

Trebuie remarcat faptul că anteturile „If-Modified-Since” și „If-None-Match” nu sunt trimise de browser dacă acesta nu a primit un antet „Last-Modified” în răspunsul serverului web în solicitările anterioare la acest lucru. pagină. În plus, atunci când utilizați sesiuni cu setări implicite într-o aplicație web, anteturile specificate nu vor fi trimise de browser. Pentru a evita acest comportament de browser, trebuie să executați funcția session_cache_limiter înainte de a începe sesiunea, trecând ca argument parametrul „private_no_expire”:

Session_cache_limiter("private_no_expire"); sesiune_start();

În plus, informații suplimentare pe această temă pot fi găsite:

www.egoroff.spb.ru - Exemple de redirecționări
htaccess.net.ru - informații suplimentare despre htaccess.

Fișierul .htaccess vă permite să setați configurațiile site-ului web fără a fi nevoie să schimbați fișierele de configurare a serverului. Un punct la începutul numelui unui fișier înseamnă că fișierul este ascuns.

Fișierul .htaccess poate fi creat într-un editor de text și apoi încărcat pe site folosind un client ftp

Notă: Numele fișierului .htaccess nu conține cuvinte sau extensii suplimentare.

În plus, locația unui astfel de fișier este, de asemenea, de mare importanță. Configurațiile din acest fișier vor afecta întregul conținut al directorului în care se află fișierul în sine, precum și toate subdirectoarele acestuia.

Caracteristici ale fișierului.htaccess

În timp ce pagina .htaccess este incredibil de utilă și poate îmbunătăți foarte mult site-ul dvs., există două lucruri de care trebuie să aveți în vedere când o utilizați.

În primul rând, este viteza. Pagina .htaccess poate încetini ușor viteza serverului; în majoritatea cazurilor este aproape de neobservat. Acest lucru se datorează aspectului paginii: așa cum sa menționat deja, fișierul .htaccess afectează paginile și subdirectoarele din directorul său. De fiecare dată când o pagină este încărcată, serverul își verifică directorul, precum și fiecare director de deasupra acesteia, până când ajunge la cel mai înalt director sau fișier .htaccess. Acest proces va continua atâta timp cât setarea AllowOverride permite utilizarea fișierelor .htaccess, indiferent dacă astfel de fișiere există chiar și în sistem.

În al doilea rând, este siguranța. Fișierul .htaccess este mult mai ușor de accesat decât un fișier obișnuit de configurare Apache, iar modificările aduse acestuia vor fi activate imediat, fără a fi nevoie să reporniți serverul. Prin urmare, utilizatorii care au drepturi de a face modificări în fișierul .htaccess pot influența serios serverul în sine. Orice directivă adăugată la .htaccess are același efect ca o directivă adăugată direct la configurația Apache.

Cum să includeți un fișier.htaccess?

Cu acces la setările serverului, puteți edita configurațiile Apache pentru a permite fișierelor .htaccess să înlocuiască configurațiile standard ale site-ului. Deschideți fișierul implicit de configurare a gazdei apache2.

Notă: Veți avea nevoie de privilegii sudo în această etapă.

sudo nano /etc/apache2/sites-available/default

Cu fișierul deschis, găsiți următoarea secțiune și modificați valoarea directivei AllowOverride de la None la All. Secțiunea ar trebui să arate astfel:


Opțiuni Indexuri FollowSymLinks MultiViews
AllowOverride All
Comanda permite, refuza
permite de la toti

Salvați și închideți fișierul și apoi reporniți apache.

sudo service apache2 reporniți

Crearefişier.htaccess

După cum sa menționat deja, fișierul .htaccess poate fi creat folosind un editor de text și apoi încărcat pe site printr-un client ftp (numele fișierului .htaccess nu trebuie să conțină cuvinte sau extensii suplimentare).

Sau puteți crea un astfel de fișier folosind terminalul; Pentru a face acest lucru, utilizați următoarea comandă, înlocuind example.com cu numele site-ului.

sudo nano /var/www/example.com/.htaccess

Cazuri de utilizare obișnuite pentru .htaccess

1. Mod_Rescrie

Unul dintre cele mai utile aspecte ale fișierului. Spațiul de fișiere .htaccess poate fi folosit pentru a defini/modifica modul în care sunt afișate URL-urile și paginile web pe un site. Informații detaliate despre cum se face acest lucru pot fi găsite la acest link.

2. Autentificare

Deși fișierul .htaccess nu necesită la fel de multe drepturi ca fișierul de configurare standard apache2.conf, acesta poate fi folosit totuși pentru a face modificări eficiente la securitatea site-ului dvs. Cert este că .htaccess vă permite să solicitați o parolă pentru a accesa anumite secțiuni ale paginii web. Parolele .htaccess sunt stocate într-un fișier numit .htpasswd.

Notă: Din motive de securitate, stocarea unui astfel de fișier în directorul site-ului nu este strict recomandată.

În fișierul .htpasswd trebuie să specificați numele și parolele tuturor utilizatorilor cărora li se permite accesul la partea securizată a site-ului.

Numele de utilizator și parolele sunt introduse în fișier ca o pereche user_name:encrypted_word. De exemplu, dacă un utilizator numit best_user are o parolă awesome, atunci o astfel de pereche ar putea arăta ca „best_user:VtweQU73iyETM”.

Notă: Fiecare pereche este introdusă pe o linie separată. Fișierul .htpasswd poate conține câte linii este necesar.

După ce ați creat .htpasswd, adăugați următorul cod la .htaccess pentru a activa caracteristica de autentificare:

AuthUserFile /usr/local/username/safedirectory/.htpasswd
AuthGroupFile /dev/null
AuthName Vă rugăm să introduceți parola
AuthType Basic
Necesită utilizator valid

Linia AuthUserFile definește calea către fișierul .htpasswd.

Linia AuthGroupFile specifică locația.htgroup. Deoarece nu există un astfel de fișier în prezent, lăsați-l la /dev/null.

Linia AuthName conține textul care va fi afișat în promptul de parolă (puteți introduce absolut orice text).

AuthType se referă la tipul de autentificare care va fi utilizat pentru verificarea parolelor. Parolele sunt verificate prin HTTP și cuvântul cheie de bază nu poate fi modificat.

Linia Solicitavalabil-utilizator spune fișierului .htaccess că mai multe persoane ar trebui să aibă acces la secțiunile site-ului protejate prin parolă. Dacă trebuie să specificați o anumită persoană care are acces la părți restricționate ale site-ului, în loc de linia Require valid-user, se folosește linia Require user Nume de utilizator.

3. Pagini de eroare personalizate

Fișierul .htaccess vă permite să creați pagini de eroare personalizate pentru site-ul dvs. Unele dintre cele mai frecvente greșeli sunt:

  • 400 Solicitare greșită
  • 401 Este necesară autorizarea
  • 403 Pagina interzisă
  • 404 Fișierul nu a fost găsit
  • 500 Eroare internă

Paginile de eroare personalizate sunt create cu scopul de a face paginile site-ului mai prietenoase și de a oferi vizitatorului site-ului informații mai detaliate decât paginile de eroare implicite ale serverului.

De exemplu, puteți crea o pagină 404 (încercați să creați orice pagină de eroare la alegere).

După crearea și încărcarea paginii de eroare, specificați locația acesteia în fișierul .htaccess:

ErrorDocument 404 /new404.html

Tine minte: Apache caută o pagină 404 în directorul rădăcină al site-ului. Când plasați o nouă pagină de eroare 404 în orice subdirector, asigurați-vă că adăugați acel subdirector la linie, de exemplu:

ErrorDocument 404 /error_pages/new404.html

4. Tipuri MIME

În cazurile în care site-ul găzduiește unele fișiere de aplicație pe care serverul nu a fost configurat să le afișeze, tipurile MIME pentru serverul Apache pot fi adăugate la fișierul .htaccess folosind următorul cod:

AddType audio/mp4a-latm .m4a

Asigurați-vă că înlocuiți aplicația și extensia fișierului cu tipul MIME pe care doriți să îl acceptați.

5.SSI

Tehnologia Server Side Includes este o economie excelentă de timp pe site-ul dvs. Una dintre cele mai obișnuite modalități de a utiliza SSI este actualizarea unui număr mare de pagini care conțin un anumit bloc de date, fără a fi nevoie să actualizați fiecare pagină individual (de exemplu, pentru a schimba citarea din partea de jos a paginii).

Pentru a activa SSI, introduceți următorul cod în .htaccess:

AddType text/html .shtml
AddHandler server-parsed.shtml

Aceste linii îi spun .htaccess că fișierele .shtml sunt valide, iar a doua linie îi spune serverului să verifice toate fișierele care se termină în .shtml pentru comenzile SSI.

Cu toate acestea, dacă există un număr mare de pagini .html pe server, a căror extensie va dura mult timp pentru a trece la .shtml, puteți utiliza o altă tactică pentru a le verifica pentru comenzile SSI. Parametrul XBitHack este utilizat pentru aceasta.

Adăugarea acestei linii la fișierul .htaccess forțează Apache să verifice toate fișierele html cu permisiunile corespunzătoare pentru Server Side Includes.

Pentru a permite unei pagini să folosească XBitHack, introduceți:

chmod +x nume_pagină.html

Rezultate

Acest ghid acoperă doar funcțiile de bază ale paginii .htaccess, care, totuși, fac lucrul cu site-ul mult mai flexibil. Dacă aveți întrebări sau completări despre capacitățile fișierului .htaccess, vă rugăm să lăsați un comentariu.

Etichete: ,