Soluții practice pentru utilizarea fișierului .htaccess

În prezent, marea majoritate a site-urilor din rețea folosesc serverul web Apache pentru a organiza munca. Întârzie puțin în performanță, dar este foarte ușor de configurat și are un număr mare de funcții.

Serverul web Apache poate fi configurat nu numai în fișierul principal de configurare, ci și prin fișierele .htaccess. Aceste fișiere sunt plasate în foldere specifice și spun serverului web cum să se comporte în acel folder și subdirectoarele sale.

Configurarea unui fișier htaccess este foarte asemănătoare cu configurarea fișierului principal de configurare Apache. Dar ea este puțin diferită. Cu acest fișier, puteți configura redirecționări, modificări interne ale adreselor URL, permisiuni, autentificare prin parolă și multe altele. În articolul de astăzi, vom analiza cum să configurați corect htaccess pentru serverul dvs.

Am început deja subiectul într-unul din articolele anterioare, dar astăzi vom reîmprospăta puțin informațiile și vom arunca o privire mai atentă la setarea htaccess.

Toate directivele din fișierul htaccess sunt executate exact în același mod ca și cum ar fi fost plasate în fișierul de configurare globală, doar în interiorul directivei . Acest lucru nu vă permite să modificați setările globale, dar puteți regla fin comportamentul programului în folderele la care aveți drepturi de acces.

Sintaxa generală a directivelor este foarte simplă, sunt perechi de comenzi și opțiunile lor separate prin spații, de exemplu:

Comanda parametru1 parametrul2 steaguri

Există o mulțime de comenzi în sine și le vom lua în considerare folosind exemple de acțiuni pe care le efectuează. Pe lângă comenzile în sine, structurile imbricate pot fi folosite aici, de exemplu, pentru a activa module sau pentru a verifica disponibilitatea unui anumit modul. Și acum să ne apropiem de modul în care se realizează corect configurarea htaccess. Să începem cu cei mai simpli pași.

Configurarea accesului htaccess

Destul de des htaccess este folosit pentru a controla accesul la un folder. Trei comenzi sunt folosite pentru a controla accesul:

  • Ordin- Ordin;
  • nega- interzice;
  • permite- permite.

În primul rând, folosind opțiunea de ordine, trebuie să specificați în ce ordine vor fi executate directivele, doar această comandă contează și nu contează în ce ordine se află în fișier.

Apoi, folosind directiva allow sau deny, permitem sau refuzăm accesul la folder de la anumite adrese. De exemplu, pentru a dezactiva tot ce trebuie să adăugați la htaccess:

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

Dar putem permite accesul doar din rețeaua locală:

Comanda refuza, permite
Negați de la toți
Permite 192.168.0.

Dacă se specifică deny,allow, atunci verificările vor fi efectuate în acea ordine. În primul rând, toate directivele deny, apoi toate directivele allow și, dacă niciuna dintre condiții nu se potrivește, atunci cererea este omisă. Cu allow,deny, o astfel de solicitare va fi refuzată implicit. De exemplu, exemplul anterior ar putea fi scris astfel:

comanda permite, refuza
Permite 192.168.0.

Modificare URL în htaccess

Cea mai obișnuită utilizare a htaccess este modificarea adreselor URL în timpul execuției sau a redirecționărilor. Modulul mod_rewrite este responsabil pentru această funcționalitate și este de obicei activat în majoritatea configurațiilor Apache.

Modificarea URL-ului în htacces se face folosind trei directive, acestea sunt RewriteBase, care specifică prefixul adresei, RescrieCond verifică conformitatea și RewriteRule- modifică adresa URL conform expresiei regulate dacă toate regulile de potrivire se potrivesc.

Mai întâi trebuie să activați Mod_Rewrite, în cazul în care modulul nu este încă activ:

Motor de rescrie pornit

Specificați că rădăcina trebuie utilizată ca prefix pentru adresa URL:

Și vom înlocui automat adresa URL a adresei de la index.html la index.php, rețineți că URL-ul original este calea către fișierul solicitat în raport cu locația fișierului htaccess:

RewriteRule index.html /index.php

Pentru o înlocuire mai eficientă, puteți utiliza expresii regulate; acestea constau din caractere și variabile speciale și caractere și numere obișnuite. Luați în considerare principalul Simboluri speciale:

  • ^ - începutul liniei;
  • $ - capăt de linie;
  • . - orice personaj;
  • * - orice număr de orice caractere;
  • ? - un simbol specific;
  • - o succesiune de caractere, de exemplu, de la 0 la 9;
  • | - simbol sau, fie un grup, fie altul este selectat;
  • () - folosit pentru a selecta grupuri de caractere.

În expresiile regulate htaccess, puteți utiliza și variabile cu date obținute din anteturile cererii, de exemplu:

  • %(HTTP_USER_AGENT)- câmpul User-Agent, care este transmis de browserul utilizatorului;
  • %(REMOTE_ADDR)- adresa IP a utilizatorului;
  • %(REQUEST_URI)- URI solicitat;
  • %(ȘIR DE INTEROGARE)- parametrii de interogare după semnul ?.

Acestea sunt variabilele cel mai des folosite, dar sunt multe altele, restul le găsiți în documentația oficială. Expresiile regulate deschid mai multe posibilități, de exemplu, puteți înlocui html cu php în toate paginile:

Rescrierea motorului pornit;
RewriteBase /;

Directiva RewriteCond oferă și mai multă flexibilitate, puteți alege la care adrese să aplicați modificarea, de exemplu, vom redefini datele doar pentru versiunea www:

RewriteBase /;
RewriteCond % (HTTP_HOST) ^www.site.ru$
RewriteRule ^(.*)\.html$ $1.php

În acest fel, puteți efectua orice fel de transformare a adreselor URL fără a redirecționa oriunde. Dar apoi ne vom uita la cum să facem redirecționări.

Configurarea redirecționărilor în htaccess

Configurarea redirecționărilor htaccess se face într-un mod similar, folosind același modul mod_rewrite, doar că acum în loc să modificăm url-ul specificăm un flag cu acțiunea dorită și codul de redirecționare.

Cea mai simplă redirecționare se poate face fără mod_rewrite, cu această linie:

Redirecționare 301 /index.html http://www.site.ru/index.php

Dar, de obicei, sunt necesare redirecționări cu un efect mai larg. Totul arată foarte asemănător, doar că acum folosim un steag pentru a nu face distincție între majuscule și minuscule, [L] pentru a opri procesarea și [R] pentru a redirecționa. De exemplu, redirecționarea htaccess dintr-o versiune fără www către un domeniu cu www:

RewriteCond %(HTTP_HOST) ^site\.ru$
RewriteRule ^(.*)$ http://www.site.ru/$1

Valoarea R=301 înseamnă codul de redirecționare care va fi returnat clientului, puteți utiliza 301, 302, etc. O redirecționare htaccess de la domeniul www către domeniul fără prefix va arăta astfel:

RewriteCond %(HTTP_HOST) ^www.site\.ru$
RewriteRule ^(.*)$ http://site.ru/$1

În același mod, puteți face o redirecționare:

RewriteRule ^adresă_veche /adresă_nouă/$1

Redirecționați de la versiunea http la https:

RewriteCond %(SERVER_PORT) ^80$
RewriteCond %(HTTP)=activat
RewriteRule ^(.*)$ https://site.ru/$1

Configurarea paginilor de eroare în htaccess

Dacă apar erori în timpul generării paginii, serverul web emite probleme mesaj scurtși codul de eroare. Dar utilizatorilor le va fi mult mai clar ce se întâmplă dacă faceți o pagină separată pentru fiecare eroare cu imagini și o explicație completă.

Setarea htaccess pentru acest articol va fi foarte utilă. Puteți utiliza directiva ErrorDocument. Cu acesta, puteți seta html-ul paginii pentru erori 4xx și 5xx. De exemplu, pentru 404:

ErrorDocument 404 http://site.ru/error/404.shtml
ErrorDocument 403 http://site.ru/error/403.shtml
ErrorDocument 401 http://site.ru/error/401.shtml
ErrorDocument 500 http://site.ru/error/500.shtml

stocarea în cache în htaccess

Browserul vă permite să stocați imagini, fișiere script, stiluri și alte fișiere media în memoria cache pentru un anumit timp. Durata de viață a memoriei cache este setată de serverul web folosind anteturi speciale. Ele pot fi configurate folosind modulul expires.

Mai întâi activăm modulul și setăm perioada implicită de cache:

Expiră activ pe
ExpirăDefault „acces plus 1 lună”

Acum putem configura memorarea în cache pentru fiecare tip de fișier MIME:

ExpiresByType text/html „acces plus 1 lună 15 zile 2 ore”
ExpiresByType imagine/gif „acces plus 5 ore și 3 minute”
ExpiresByType imagine/pictogramă x „acces plus 2592000 secunde”

În primul rând indicăm că pagini html trebuie considerat valabil timp de o lună 15 zile și două ore din momentul descărcarii. Sunt disponibile următoarele tipuri de fișiere:

  • imagine/pictogramă x;
  • imagine/jpeg;
  • imagine/png;
  • imagine/gif;
  • aplicație/x-shockwave-flash;
  • text/css;
  • text/javascript;
  • aplicație/javascript;
  • aplicație/x-javascript;
  • text/html;
  • aplicație/xhtml+xml;

Pentru a vă asigura că acest construct nu va genera erori, includeți-l într-un if:


Comprimarea fișierelor în htaccess

Pentru compresie în Apache, puteți utiliza modulul deflate. Aici este suficient să enumerați pur și simplu tipurile mime ale fișierelor de comprimat. De exemplu:

AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript

De asemenea, puteți include o declarație if pentru a verifica dacă modulul este acceptat:


constatări

În acest articol, ne-am uitat la modul în care fișierul htaccess este configurat pentru funcționarea corectă a site-ului dvs. Toate acțiunile sunt efectuate nu atât de dificil. Este suficient să copiați câteva rânduri și să le remediați pentru a se potrivi nevoilor dvs. Dacă aveți întrebări, întrebați în comentarii!

La final, vă ofer un videoclip cu o prezentare generală a fișierului de configurare Apache:

Apache- Cel mai comun server HTTP. Este distribuit gratuit, inclusiv textele sursă. Scripturile sunt acceptate CGI(inclusiv FastCGI), PHP, Perl, Java. Autentificare - de bază, mesaj-digest, TLS (SSL). Din aprilie 1996 este cel mai popular server HTTP pe Internet, în august 2007 rula pe 51% din toate serverele web.

.htaccess- fișier de configurare suplimentar al serverului web Apache, precum și servere similare. Vă permite să setați un număr mare opțiuni suplimentareși permisiuni pentru a rula serverul web pe utilizatori individuali (precum și pe diferite foldere ale utilizatorilor individuali), cum ar fi acces controlat la director, reatribuirea tipurilor de fișiere etc. fără a da acces la fișierul principal de configurare, adică. fără a afecta funcționarea întregului serviciu.

.htaccess este o asemănare httpd.conf cu diferența că afectează doar directorul în care se află și directoarele sale fii. Utilizabilitate .htaccess prezente în orice director de utilizatori.

Fişier .htaccess poate fi plasat în orice director al site-ului. Directivele acestui fișier afectează toate fișierele din directorul curent și toate subdirectoarele acestuia (cu excepția cazului în care aceste directive sunt suprascrise de directivele fișierelor de bază .htaccess).

directive .htaccess oferă utilizatorului o gamă largă de opțiuni pentru personalizarea site-ului, inclusiv:










O listă cu toate directivele disponibile poate fi vizualizată.

HTTP_ACCEPT

Descrie preferințele clientului cu privire la tipul de document.

REMOTE_ADDR

adresa IP a vizitatorului.

GAZDA LA DISTANTA .

Adresa vizitatorului în formă normală - de exemplu, rt99.net.ru .

REMOTE_IDENT

Numele utilizatorului de la distanță. Are formatul name.host, de exemplu, www.rtt99.net.ru

REMOTE_USER

La fel ca REMOTE_IDENT, dar conține doar numele. Exemplu: kondr

REQUEST_METHOD

Vă permite să determinați tipul de solicitare (GET sau POST). Trebuie analizat, pentru că determină modul în care urmează să fie procesată informația.

SCRIPT_FILENAME

Calea completă către pagina web de pe server.

PATH_INFO

Conține tot ce a fost trecut în scenariu.

ȘIR DE INTEROGARE

Conține șirul transmis ca cerere la apel CGI scenariu.

AUTH_TYPE

Folosit pentru a identifica utilizatorul

DOCUMENT_ROOT

Conține calea către directorul rădăcină al serverului.

SERVER_ADMIN

Adresa poștală proprietarul serverului specificat în timpul instalării.

NUMELE SERVERULUI SERVER_ADDR

Adresa IP a site-ului dvs.

SERVER_PORT

Portul pe care rulează Apache.

SERVER_PROTOCOL

Versiune http protocol.

SERVER_SOFTWARE

Numele serverului, de exemplu, Apache/1.3.2 (Unix)

TIME_YEAR
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY
TIMP

Variabile concepute pentru a funcționa cu timpul în diferite formate.

API_VERSION

Aceasta este versiunea API modul Apache(interfață internă între server și modul) în versiunea curentă a serverului, așa cum este definit în include/ap_mmn.h.

CEREREA

Linie completă http-cerere trimisă de browser către server (adică, „GET /index.html HTTP/1.1”). Nu include niciun antet suplimentar trimis de browser.

REQUEST_URI

Resursa solicitată în șirul de solicitare HTTP.

REQUEST_FILENAME

Drum complet către Sistemul de fișiere server la un fișier sau script care se potrivește cu această solicitare.

IS_SUBREQ

O condiție este un șablon de condiție, de ex. o expresie regulată aplicată instanței curente a „Șirului comparat”, adică „Șirul comparat” este căutat pentru o potrivire cu Condiția.
Amintiți-vă că condiția este perl-expresie regulată compatibilă cu unele completări:


Toate aceste verificări pot fi precedate de prefix Semn de exclamare("!") pentru a le inversa valoarea.

RewriteEngine activează sau dezactivează funcționarea mecanismului de conversie. Dacă este setat la oprit, acest modul nu funcționează deloc. Rețineți că, implicit, setările de transformare nu sunt moștenite. Aceasta înseamnă că trebuie să aveți o directivă RewriteEngine pentru fiecare gazdă virtuală în care doriți să utilizați acest modul.
Sintaxă RewriteEngine după cum urmează:

Utilizați pentru a combina condițiile în reguli SAUîn loc de ȘI. Un exemplu tipic este redirecționarea cererilor pentru subdomenii către directoare separate.

Pentru emiterea diferitelor site-uri pt browsere diferite, conform "Agent utilizator:" antet cerere, puteți utiliza următoarele directive:


În înlocuire, puteți folosi, printre altele, steaguri speciale, adăugând directiva ca al treilea argument RewriteRule. Steaguri este următoarea listă de steaguri, separate prin virgulă:

„redirecționare|R[=cod]”
(provoacă o redirecționare)
Prefix în înlocuire vizualizare http://thishost[:thisport]/(crearea unui nou URL din oricare URI) pornește o redirecționare externă (redirecționare). Dacă nu există cod, în înlocuire răspunsul va fi http starea 302 (TEMPORAR ÎNTRASAT). Pentru a opri procesul de conversie, trebuie să scrieți și un steag "L".

„interzis|F[=cod]”
(face URL-ul interzis)
Aceasta face curentul URL interzis, de exemplu, un răspuns este imediat trimis clientului cu http statutul 403 (Interzis). Utilizați acest steag împreună cu cel corespunzător RescrieCond a bloca URL conform unor criterii.

„a plecat|G[=cod]”
(face URL-ul „mort”)
Acest steag face curent URL„mort”, adică trimis imediat http răspuns cu starea 410 ( PLECAT). Utilizați acest steag pentru a marca paginile „moarte” care nu mai există.

„proxy|P[=cod]”
(apelează proxy)
Acest indicator marchează partea wildcard ca o solicitare proxy internă și imediat (adică procesul de conversie se oprește aici) o trece prin modulul proxy. Utilizați acest indicator pentru a obține o implementare mai puternică a directivei. ProxyPass, care integrează un anumit conținut de pe servere la distanță în spațiul de nume al serverului local.

„ultimul|L[=cod]”
(ultima regula)
Opriți procesul de transformare în acest moment și nu aplicați alte reguli de transformare. Utilizați acest steag pentru a nu converti curentul URL alte reguli de transformare care urmează.

„următorul|N[=cod]”
(următoarea rundă)
Reporniți procesul de transformare (începând cu prima regulă). În acest caz URL se potrivește din nou cu unele condiții, dar nu cu originalul URL, A URL ieșit din regula ultimei transformări. Utilizați acest indicator pentru a reporni procesul de conversie, de ex. salt necondiționat la începutul ciclului.

„lanț|C[=cod]”
(legat la următoarea regulă)
Acest steag leagă regula curentă de următoarea (care, la rândul său, poate fi legată de următoarea etc.). Acest lucru are următorul efect: dacă există o potrivire pentru regulă, procesul continuă ca de obicei, adică. steagul nu are efect. Dacă regula nu se potrivește cu condiția, toate regulile ulterioare asociate sunt ignorate.

„tip|T=tip MIME [=cod]”
(forțați setarea tipului MIME)
Instalarea forțată tip MIME fișierul țintă în tip MIME. De exemplu, aceasta poate fi folosită pentru a simula mod_alias directive ScriptAlias, care forțează setarea pentru toate fișierele din directorul afișat MIMA tip egal „application/x-httpd-cgi”.

„nosubreq|NS[=cod]”
(utilizat numai în cazul unei subinterogări non-interoare)
Acest flag indică motorului de transformare să ignore directiva dacă subinterogarea curentă este o subinterogare internă. De exemplu, subinterogări interne în Apache apare atunci când mod_include încearcă să obțină informații despre fișiere posibile implicit pentru directoare (index.xxx). Cu subinterogări, acest lucru nu este întotdeauna util și chiar uneori provoacă o problemă cu setul de directive de transformare. Utilizați acest steag pentru a exclude anumite reguli.

„nocase|NC[=code]”
(indiferent majuscule/minuscule)
Acest lucru face ca șablonul să nu țină seama de majuscule și minuscule, de exemplu. nu există nicio diferență între „A-Z” și „a-z” atunci când șablonul este aplicat curentului URL.

„qsappend|QSA[=cod]”
(adăugați șirul de interogare)
Acest indicator îi spune motorului de transformare să adauge, în loc să înlocuiască, un șir de interogare din URL la unul existent, în șirul de substituție. Utilizați acest lucru atunci când doriți să adăugați date suplimentare la șirul de interogare folosind directive de transformare.

„noescape|NE[=code]”
(nu scapă URI la ieșire)

Acest steag nu mod_rewrite aplica regulile normale de evadare URI la rezultatul transformării. De obicei, caracterele speciale (cum ar fi „%”, „$”, „;”, și așa mai departe) vor fi eliminate de substituțiile lor hexadecimale („%25”, „%24”, respectiv „%3B”, respectiv); acest steag îl împiedică să facă acest lucru.

Dacă în subdirectoare în .htaccess nu există nicio directivă de modul mod_rewrite, atunci toate regulile de traducere sunt moștenite din directorul părinte.

Dacă este prezent în dosar .htaccess orice directive de modul mod_rewrite nimic nu este moștenit, iar starea implicită este setată la aceeași ca în fișierul principal de configurare a serverului web ("off" în mod implicit). Prin urmare, dacă aveți nevoie de reguli de traducere pentru un anumit director, atunci trebuie să introduceți directiva " Motor de rescrie pornit„în .htaccess pentru un anume director.

Când moșteniți reguli din directoarele superioare și adăugați la ele reguli noi specifice numai acestui director, trebuie să setați următoarele la început: " Motor de rescrie pornit" și " RewriteOptions moștenește" - ultima directivă spune serverului să continue.

Exemple de utilizare mod_rewrite poti sa vezi

Dacă aveți un sistem de operare al familiei Windows, Vă puteți conecta la server prin SSH(se pot găsi instrucțiuni de conectare) și utilizați utilitarul htpasswd.

Alergare htpasswd fara parametri vom vedea:

[email protected]~#htpasswd
Utilizare:
htpasswd [-cmdps] nume de utilizator pentru fișierul de parole
htpasswd -b passwordfile nume utilizator parola
-c Creați un fișier nou.
[email protected] ~ #

Nu vom acoperi aici toate opțiunile pentru această comandă, dar puteți citi singuri detaliile rulând htpasswdîn shell unix, sau consultând pagina de documentație Apache relevantă.

Deci, inițial nu avem încă un fișier cu parole și trebuie să-l creăm:

Și acum vrem să adăugăm un alt utilizator. Deoarece avem deja un fișier cu parolă, pur și simplu nu vom folosi opțiunea „-c”:

arătând utilizator valid, Permiteți accesul tuturor utilizatorilor listați în fișierul cu parole.

Să dăm un exemplu pentru accesarea anumitor utilizatori dintr-un fișier cu parole .htpasswd


AuthName" Arie protejata, necesita autorizatie" AuthType Basic AuthUserFile /home/t/test/.authfile necesită un utilizator valid

Trebuie amintit că, cu o astfel de restricție de acces, parolele sunt transmise prin canale de comunicare în text clar și, în anumite circumstanțe, pot fi interceptate de intruși. Prin urmare, din motive de securitate, se recomandă organizarea accesului la zonele restricționate ale site-ului printr-un sistem securizat Conexiune SSL.

  • tutorial

Google plasează mai sus site-urile care se încarcă mai repede. - Dacă eBay sau Amazone măresc timpul de încărcare a paginii cu 9%, își pierd 1% din profit. - Faceți site-ul mai rapid pentru a economisi traficul clienților și numărul de apeluri pe server.

.htaccess este eroul nostru

Profesioniștii știu ce este htaccess.
Cei care urmează să părăsească narod.ru pentru php-hosting trebuie doar să afle despre ce este vorba.
Cei care tocmai au instalat primul lor jooml "y sau wordpress au nevoie urgent să știe despre eroul nostru - htaccess

De ce avem nevoie de .htaccess?

Imaginează-ți că ți-ai cumpărat o găzduire și se pare că aproape ai găsit fericirea. Dar într-o zi (poate de două ori, poate de trei ori) site-ul tău nu mai răspunde. Începe să se încarce încet și, în general, se comportă ciudat. Și găzduirea virtuală este un lucru atât de complicat încât, pe lângă site-ul tău pe acest server, există alte două duzini de site-uri. Toate sunt diferite în ceea ce privește puterea, organizarea și traficul. Iar când vecinul tău, întâmplător, sau poate intenționat, lansează scripturi complexe sau redundante pe găzduirea lui, îți răspunde și asta.

Sau alt exemplu. Să presupunem că resursa dvs. începe să câștige popularitate, dar este prea devreme pentru a trece la un server dedicat, iar capacitățile VPS nu mai sunt suficiente. htaccess te poate ajuta foarte mult.

Și htaccess poate rezolva unele probleme cu securitatea site-ului dvs.

Vreau .htaccess perfect!

Se pare că există o mulțime de informații contradictorii pe internet cu privire la modul de utilizare a .htaccess. A trebuit să experimentez lung și plictisitor pentru a înțelege ce este adevărat și ce este fals. În cele mai multe cazuri, autorii de sfaturi din blogurile lor uită să menționeze că unul sau altul modul Apache este necesar pentru ca anumite condiții să funcționeze.
Dar destule cuvinte, este timpul să trecem la treabă. Să încercăm să creăm un .htaccess aproape perfect

1. În prima linie setăm principalele opțiuni:


Utilizarea opțiunilor este foarte utilă atunci când nu aveți acces la configurarea Apache sau aveți nevoie de setări Apache diferite pentru site-uri diferite de pe același server.

Opțiunea -ExecCGI dezactivează execuția scripturilor CGI. Este mai bine să permiteți doar anumite foldere. Va crește securitatea.
Opțiunea -Indexes dezactivează afișarea conținutului directoarelor dacă acestea nu conțin un fișier index. Pe găzduirea partajată, este de obicei activată în mod implicit. Schimbând minusul în plus +Indexurile, puteți, dimpotrivă, să permiteți vizualizarea conținutului directorului (sau directoarelor).
Opțiunea -Includes dezactivează SSI. Dacă nu știți ce este, interziceți-l (puteți Yandex(!) la cererea Server Side Include dacă doriți să aflați mai multe despre el). Puteți utiliza opțiunea IncludesNOEXEC, care vă va permite să utilizați SSI fără a rula scripturi.
Opțiunea +FollowSymLinks vă permite să utilizați legături simbolice către fișiere sau directoare care nu se află în rădăcina site-ului dvs.

Notă

Puteți utiliza htaccess cu setări diferite pentru directoare diferite. Puteți declara -Indexuri în rădăcina site-ului și puteți crea un alt fișier .htaccess în directoarele selectate și declara +Indeși în el. Amintiți-vă că opțiunile htaccess se extind de sus în jos în arborele de directoare până la cea mai adâncă imbricare până când sunt suprascrise de un alt htaccess.

Nu este necesar să enumerați complet toate opțiunile din child.htaccess dacă nu se modifică. Este suficient să specificați (reatribuiți) doar acele opțiuni și directive care sunt modificate. Alte opțiuni vor fi, de asemenea, moștenite de la părinte.


Exemplu

Să presupunem că aveți o cale ca aceasta /site/folder_one/subfolder/other/
În fișierul /site/.htaccess specificați:
Opțiuni -Indexuri Permite de la toate
În fișierul /site/folder_one/.htaccess specificați:
Negați de la toți
În fișierul /site/folder_one/subfolder/.htaccess specificați:
Opțiuni +Indexuri Permite de la toți
Ia asta:
Fișierele de orice conținut vor fi afișate în folderul site-ului, doar dacă sunt accesate direct. Sau un fișier index dacă nu există acces explicit la unul dintre fișiere. Dacă fișierul index lipsește, se primește o eroare 403.
Accesul la folderul folder_one este interzis. Chiar dacă știți numele fișierului și îl introduceți bara de adresa Serverul va returna o eroare 403 ca ​​răspuns.
Dosarul subfolderului poate fi accesat prin adresa directă sau, dacă nu există un fișier index, va afișa conținutul directorului. Aceleași drepturi se aplică și celuilalt folder.
Dacă eliminați fișierul htaccess din folderul folder_one, atunci acesta va moșteni drepturile de la site-ul părinte.


2. Puțin SEO (unde fără el)


Asigurați-vă că nu uitați de afecțiune . Nu fiți la găzduirea acestui modul și site-ul dvs. va da o eroare a 500-a. Acest modul special este inclus în versiunea implicită a Apache. Ei bine, ce se întâmplă dacă... Există tot felul de hosteri și administratorii lor.

În această parte, beneficiul este mai mult pentru SEO. Modulul de rescriere, după cum sugerează și numele, se ocupă de redirecționări (bună ziua Cap).

În această parte a fișierului, am indicat două lipiri: am îmbinat site-ul dvs. și www.site-ul dvs. Chiar dacă utilizatorul vă scrie site-ul fără WWW, el va fi redirecționat cu o redirecționare 301 către www.site-ul dvs. .
Și, de asemenea, am scăpat de /index.php din șirul de interogări. Dacă utilizatorul scrie www.yoursite/index.php el va fi redirecționat (din nou cu o redirecționare 301) către www.yoursite .
Acum motoarele de căutare nu vor fi confundate între www și nu se vor duplica pagina principalaîn rezultatele indexării site-ului dvs. Lipirea domeniului Google SEO, dacă nu înțelegeți de ce este necesar.

3. Cine se ocupă de dosar?

Dacă folderul tău are fișiere index.html și index.php (nu știu de ce și cine avea nevoie de asta, dar am văzut asta de mai multe ori), atunci cum să-i spun serverului care dintre ele este mai indexat?

DirectoryIndex index.php
Și puteți specifica acolo, să zicem, roosso.php și apoi tastând în șirul de interogare adresa site.blah/blah/blah/ veți vedea nu index, ci roosso

4. Mai multe setări...

SetEnv TZ Europe/Moscova ServerSignature Off AddDefaultCharset UTF-8
Prima linie stabilește fusul orar. De exemplu, în Apache 2.22.22 a existat o eroare legată de această opțiune. Funcțiile de timp din php nu au funcționat până când ați setat fusul orar.

A doua linie este semnătura serverului. Le-ați văzut de mai multe ori pe orice pagină de sistem, cum ar fi erori 500 sau 403. De obicei există unele Informații tehniceși e-mailul webmasterului. Prefer să ascund informații despre software de pe server chiar și în astfel de fleacuri. Colegii paranoici mă vor sprijini.

Ghici ce face a treia linie?

5. Când nu există acces la php.ini

Cu ajutorul .htaccess ne putem gestiona și în continuare setări PHP. Pe o găzduire partajată, de regulă, nu există nicio modalitate de a modifica setările php.ini. Cel mai adesea, acest lucru nu este necesar. Dar totuși există o serie de opțiuni de control care ne pot fi utile. De exemplu, creșteți limita pentru încărcarea fișierelor sau limita pentru transferul de date folosind metoda POST.


Prima linie vă permite să încărcați fișiere de până la 32 de megaocteți. Valoarea implicită în php este de obicei 8 sau 16 megaocteți.
A doua linie permite postarea de până la 10 megaocteți. În mod implicit, această valoare este de obicei de 2 megaocteți.
A treia linie stabilește codificarea folosită de scripturile dvs. În esență, dublează linia: „AddDefaultCharset UTF-8”. Dar recurg adesea la setarea codării prin php.
A patra linie modifică limita de timp alocată pentru execuția scriptului. În mod implicit, este de obicei 30 de secunde. Dar uneori este nevoie de mai mult timp pentru a efectua unele procesări complexe.

6. Tipuri de fișiere. Înșelăciune și fără înșelăciune.

În practica mea, sa întâmplat de câteva ori ca, după o actualizare de către furnizorul de software, tipurile de fișiere să dispară. Deși acest lucru este rar. Timp de 10 ani, doar două cazuri. Dar uneori aveam nevoie să fac ca html să funcționeze ca php. Și uneori trebuie să-l înveți pe Apache să facă distincția între tipurile de fișiere pe care nu le cunoaște. (După cum s-a dovedit, Apache știe puțin despre tipurile de fișiere rare.) Într-o astfel de situație, următorul cod ne va salva:

Aplicație AddHandler/x-httpd-php .html AddHandler cgi-script .pl .py .jsp .asp .htm .shtml .sh .cgi Aplicație AddType/x-javascript .js AddType text/css .css AddType text/xml .xml Aplicație AddType/octet-stream .doc .mov .avi .pdf .xls # Aplicație ForceType/x-httpd-php

Prima linie va permite fișierelor noastre php să aibă o extensie html, dar să ruleze ca php. Este util în multe cazuri. Și în vremurile bune, când motoarele de căutare indexau mai bine CNC, o astfel de linie venea întotdeauna în ajutor.
Putem reatribui, adăuga sau înlocui orice tip de fișier cu permisiuni care ne sunt convenabile.

Interesant truc

Apropo, puteți scrie cu ușurință, de exemplu, această linie:

Aplicația AddHandler/x-httpd-php .i
Apoi redenumiți toate fișierele dvs., schimbând extensia în .i (fără a uita, bineînțeles, de link-uri) și adresele fișierelor de pe site-ul dvs. nu vor fi site.my/index.php?uri ci site.my/index. i?uri

Eu de exemplu scriu
Aplicația AddHandler/x-httpd-php .roosso
și creez un fișier alex.roosso în rădăcina site-ului meu în interiorul codului php obișnuit. Este un fel ca o pagină despre preferata mea. Și în bara de adrese va arăta ca www.black-web.ru/alex.roosso (linkul funcționează, puteți vedea ce este).


A doua linie specifică ce extensii de fișiere ar trebui să fie executate ca scripturi cgi.

Al treilea, al patrulea și al cincilea rând, pentru orice eventualitate, specifică tipul mime al fișierelor cu rezoluție css, js, xml. Nu confundați cu alocarea unui antet în răspunsul serverului la o solicitare, așa cum se face în primele două rânduri.

A șasea linie a acestei secțiuni este necesară dacă site-ul dvs. are conținut care poate fi descărcat pentru utilizatori. Dacă adăugați această linie, atunci când accesați aceste fișiere, li se va solicita să le descarce pe computer și nu așa cum este acum browsere moderne o grămadă de pluginuri care chiar și cuvânt se deschid în browser.

Am comentat al șaptelea rând. Aceasta este o linie într-o ordine forțată-voluntară, toate fișierele de pe serverul dvs. vor rula ca php. Este mai bine să-l utilizați numai în foldere separate, dacă este necesar.

7. Adulții și copiii știu că arhivele cântăresc mai puțin...

Util atunci când paginile dvs. se încarcă mai repede. De aceea, oamenilor le-a venit ideea de a arhiva fișiere. Și apoi s-au gândit la asta și au decis că puteți arhiva ambele pagini pe site-uri și poze. Mai mult, pentru a face acest lucru în mod invizibil pentru utilizator, dar reduce semnificativ traficul și accelerează încărcarea paginii. Au auzit cuvinte magice, acum vom discuta cum se poate face acest lucru.

Apache are două module de compresie. Ambele nu sunt module implicite, așa că este posibil să nu fie neapărat prezente la ISP-ul dumneavoastră. Dar, după cum a arătat practica, 99% dintre furnizori au unul dintre ele. Cel mai comun este mod_deflate. Pentru a-l folosi pentru a comprima tot conținutul de pe site-ul dvs., adăugați următoarele rânduri la .htaccess:


După cum puteți vedea, trebuie să enumerăm tipurile mime ale fișierelor care ar trebui să fie comprimate. Puteți adăuga videoclipuri și imagini aici, dar va da puțin sens. Deoarece jpeg sau gif sunt ele însele formate comprimate. La fel ca avi sau flv. De fapt, nu vei câștiga nimic subliniindu-le.

Al doilea modul mai puțin popular este mod_gzip. Pentru a activa compresia cu acesta, adăugați următoarele rânduri:


Acest modul poate funcționa cu măști, ceea ce este, fără îndoială, un mare plus. Și sintaxa sa este mult mai flexibilă decât cea anterioară. Dar este folosit mai rar. Și în ceea ce privește compresia, nici măcar nu presupun să judec care dintre module este mai bun. Nu am observat prea multă diferență la testare.

8. Este chiar mai rapid?

Poate sa. Dacă utilizați memoria cache a paginii. Memorarea în cache are atât avantaje, cât și dezavantaje, așa că trebuie să fiți pregătit să abordați această problemă. Pentru un site actualizat dinamic la fiecare 2-3 minute, de exemplu, un forum popular, trebuie să luați în considerare faptul că utilizatorul trebuie să vadă informații actualizate. Dar orice site are conținut care este mai mult sau mai puțin static. De exemplu aceleași imagini sau fișiere de stil. Prin urmare, va trebui să folosim memoria cache pentru diferite conținuturi de pe site în moduri diferite. În marcajul html, putem folosi întotdeauna metaetichete. Și prin php putem seta antetele de răspuns ale serverului. Rămâne întrebarea, ce să faci cu css, js, imagine etc. etc.

Două module ne pot ajuta în acest sens: mod_headers și mod_expires, care pot seta anteturi în răspunsul serverului și pot spune browserului dumneavoastră ce și cum să memoreze în cache. Unul dintre module este de obicei de la furnizor, dar, așa cum este cazul oricărui modul care nu este inclus în ansamblul standard Apache, nimeni nu vă va oferi o garanție de 100%. Prin urmare, din nou, pentru a evita eroarea a 500-a, precizează condițiile pentru fiecare dintre module.

#dezactivați memoria cache
Aici este sintaxa pentru mod_headers. Cred că comentariile arată clar ce este.
În această secțiune, am dezactivat stocarea în cache a fișierelor php. Deși, în opinia mea, un interval mic de timp de stocare în cache nu le va răni. 5-30 de secunde este un interval de timp în care mici schimbări. Și mulți utilizatori le place să folosească tasta înapoi (înapoi). Pentru a nu încărca pagina pentru ei a doua oară, ci pentru a o ridica din cache, un interval rezonabil de stocare în cache este încă adecvat.

În a doua secțiune, unde sunt condițiile pentru mod_expires, fac exact asta - pentru php am setat un interval mic de cache.

9. Reguli de ton politicos...

În procesul de modernizare a site-ului nostru, lăsăm adesea cozi sub formă de link-uri care duc la pagini pe care le-am eliminat. Uneori, astfel de link-uri vin de pe alte site-uri sau din motoarele de căutare. Pentru a nu pierde utilizatori, este considerat politicos să ai propriile pagini pentru tipuri variate erori. Inclusiv chiar și erorile de server. De exemplu, mesajul de eroare standard 500 este foarte plictisitor și sumbru și este puțin probabil să-l facă pe utilizator să dorească să vă viziteze pagina din nou. Dar există trucuri în htaccess care pot face chiar și această pagină mai primitoare.

# Solicitare greșită ErrorDocument 400 /400.html # Autorizare necesară ErrorDocument 401 /401.html # Forbidden ErrorDocument 403 /403.html # Not found ErrorDocument 404 /404.html # Method Not Allowed ErrorDocument 405 /405.html ErrorDocument Timed Out 408 /408.html # Request URI Too Long ErrorDocument 414 /414.html # Internal Server Error ErrorDocument 500 /500.html # Not Implemented ErrorDocument 501 /501.html # Bad Gateway ErrorDocument 502 /502.html # Service Unavailable Error3cument50 503.html # Gateway Timeout ErrorDocument 504 /504.html
Pentru 400 de erori, puteți folosi și pagini dinamice în php. Dar pentru 500 este mai bine să o faci pe html și js. Această parte a erorilor este de obicei legată de erorile de server (în cele mai multe cazuri), iar php sau cgi de obicei nu funcționează într-o astfel de situație.

Dacă ești prea leneș să faci atât de multe pagini, setează pagina principală a site-ului sau harta site-ului ca pagină de eroare.

Toate acestea le faci exclusiv pentru oameni. Roboților de căutare nu le pasă dacă aveți sau nu pagini de eroare. Ei văd răspunsul serverului cu un cod de eroare și vă blochează pagina de căutare. Așa că rețineți că acesta nu este un panaceu. Aceasta este doar o curtoazie pentru publicul dvs. și pentru imaginea site-ului dvs.

10. Rezumând

Experții înțeleg că nu totul este descris în acest articol. Am atins aici doar suprafața „icebergului”. De fapt, posibilitățile .htaccess sunt mult mai extinse decât cele descrise în articol. Dar nu am urmărit scopul de a traduce manualul htaccess în rusă. Tot ce am vrut să fac a fost să creez o mică coloană vertebrală a fișierului .htaccess pentru cei care tocmai au început să studieze această problemă, pentru a le economisi timp în căutarea informațiilor în rețea.

Ca urmare a tuturor manipulărilor, ar fi trebuit să primim un fișier cu următorul conținut:

Opțiuni Toate -ExecCGI -Indexuri -Include +FollowSymLinks RewriteEngine on RewriteBase / RewriteCond %(HTTP_HOST) ^black-web RewriteRule (.*) http://www.black-web.ru/$1 RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.php\ HTTP / RewriteRule ^index\.php$ http://www.black-web.ru/ DirectoryIndex index.php SetEnv TZ Europe/Moscova ServerSignature Off #AddDefaultCharset UTF-8 php_value upload_max_filesize 32M php_value post_max_size 10M php_value default_charset utf-8 php_value max_execution_time 200 Aplicație AddHandler/x-httpd-php .html AddHandler cgi-script .pl .py .jsp .asp .htm .shtml .sh .cgi Aplicație AddType/x-javascript .js AddType text/css .css AddType text/xml .xml Aplicație AddType/octet-stream .doc .mov .avi .pdf .xls # Aplicație ForceType/x-httpd-php AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript mod_gzip_on Da mod_gzip_dechunk Da mod_gzip_item_include fișier \.(html?|txt|css|js|php|pl)$ mod_gzip_item_include mime ^text\.* mod_gzip_item_include mime ^application/x-javascript_item_include mime ^application/x-javascript.* mod_image_exclude_m ^exclude_m.* Codificarea conținutului:.*gzip.* #cache html și fișiere htmÎntr-o zi Set antet Cache-Control „max-age=43200”#cache fișiere css, javascript și text timp de o săptămână Set antet Cache-Control „max-age=604800”#cache flash și imagini timp de o lună Set antet Cache-Control „max-age=2592000”#dezactivați memoria cache Antetul dezactivat Cache-Control ExpiresActiv la #cache implicit de 5 secunde Expiră implicit „acces plus 5 secunde” #cache flash și imagini pentru o lună ExpiresByType imagine/pictogramă x „acces plus 2592000 secunde” ExpiresByType imagine/jpeg „acces plus 2592000 secunde” ExpiresByType imagine/pngType „ plus 2592000 secunde" ExpiresByType imagine/gif "acces plus 2592000 secunde" Aplicația ExpiresByType/x-shockwave-flash "acces plus 2592000 secunde" #cache css, javascript și fișiere text timp de o săptămână ExpiresByType "access text/cs60ss" plus 2592000 secunde" text/javascript „acces plus 604800 secunde” ExpiresByType application/javascript „acces plus 604800 secunde” ExpiresByType application/x-javascript „acces plus 604800 secunde” #cache fișiere html și htm pentru o zi ExpiresByType text/html „acces 0 secunde plus44” " #cache fișiere xml timp de zece minute ExpiresByType application/xhtml+xml „acces plus 600 de secunde”# Solicitare greșită ErrorDocument 400 /400.html # Autorizare necesară ErrorDocument 401 /401.html # Forbidden ErrorDocument 403 /403.html # Not found ErrorDocument 404 /404.html # Method Not Allowed ErrorDocument 405 /405.html ErrorDocument Timed Out 408 /408.html # Request URI Too Long ErrorDocument 414 /414.html # Internal Server Error ErrorDocument 500 /500.html # Not Implemented ErrorDocument 501 /501.html # Bad Gateway ErrorDocument 502 /502.html # Service Unavailable Error3cument50 503.html # Gateway Timeout ErrorDocument 504 /504.html

11. Postfață.

Am încercat să nu mă grăbesc să scriu articolul și a durat aproape o zi. Dar totuși, undeva aș putea face greșeli de ortografie sau de punctuație. Vă cer să nu executați, ci să iertați. Și este mai bine să scriu într-un personal, astfel încât să corectez erorile.

Și în sfârșit, pentru iubitorii de experimente, câteva rânduri de .htaccess. Judec din propria mea experiență - în practică, cunoștințele se dobândesc mai bine decât în ​​teorie.

fișier htaccess - exemple de instalare și utilizare - 4,1 din 5 bazat pe 18 voturi

Fișierul htaccess vă permite să configurați și să suprascrieți setările serverului web Apache și ale serverelor similare. Cu acesta, puteți seta permisiuni și parametri pentru ca serverul să funcționeze cu anumiți utilizatori de găzduire și chiar pe foldere individuale ale unui anumit utilizator.

Este folosit cel mai frecvent pentru crearea de redirecționări 301 de la URL-uri vechi la altele noi, remaparea tipului de fișier, acces controlat la directoare și multe altele. Datorită fișierului htaccess, nu este nevoie să accesați fișierul de configurare principal și să afectați funcționarea serverului în ansamblu.

Ce este un fișier htaccess și pentru ce este folosit

După cum am menționat, htaccess este folosit pentru a seta unele opțiuni pentru Apache și alte servere. În ciuda extensiei mari și ciudate, personalizarea fișierului .htaccess se face prin deschiderea și modificarea conținutului acestuia folosind orice editor de text.

Fișierul htaccess a fost inventat special pentru a permite fiecărui utilizator să modifice configurația serverului, afectând doar propriul site, și nu întregul server. Toată lumea știe că principalele directive de configurare Apache sunt în fișierul httpd.conf. Cu toate acestea, majoritatea utilizatorilor, și dacă vorbim de găzduire virtuală, atunci toți utilizatorii, nu au posibilitatea de a-l accesa și drepturile de modificare, deoarece această acțiune se va aplica tuturor.

Un fișier htaccess este adesea denumit fișier dinamic. Acest lucru se datorează faptului că serverul trebuie să îl acceseze de fiecare dată când trebuie să interogheze directorul care îl conține. Poate că acesta este un avantaj semnificativ, deoarece modificările făcute de utilizator în fișier vor intra imediat în vigoare, fără a fi nevoie să reporniți serverul. Dacă se fac modificări la fișierul de configurare principal, repornirea serverului este o condiție prealabilă pentru ca acestea să aibă efect.

Desigur, nu totul este atât de lin pe cât ne-am dori, deoarece utilizarea htaccess afectează ușor performanța serverului, totuși, în cazul accesului închis la fișierul de configurare principal, Pe aici este cea mai simplă și mai convenabilă metodă de modificare a parametrilor.

Câteva caracteristici ale utilizării htaccess:

1. Poate fi redefinit un numar mare de directive în fișierul principal httpd.confg

2. Dacă plasați fișierul htaccess în directorul rădăcină, acesta se va răspândi în întregul site (singurele excepții sunt acele directoare în care se află propriul fișier de configurare și directoarele aflate mai jos în structura arborescentă)

3. Puteți plasa fișierul htaccess în orice director, iar directivele acestuia vor fi aplicate tuturor subdirectoarelor

4. Htaccess nu este disponibil utilizatorului pentru vizualizare din browser, deoarece aparține categoriei „sistem”.

Astfel, cu htaccess, utilizatorul are flexibilitatea de a-și configura propriul server și poate aplica următoarele opțiuni:

  • Directive simple de redirecționare (redirecționare);
  • Directive complexe de redirecționare (mod_rewrite);
  • Pagini de index;
  • Eroare de procesare;
  • Definirea codificarii;
  • Gestionați accesul la directoare și fișiere;
  • Protectie prin parola directorului;
  • Opțiuni PHP.

Exemple de utilizare cea mai frecventă a fișierului htaccess

Acum ne vom uita la cele mai comune opțiuni de lucru pentru utilizarea htaccess pentru a personaliza un site.

Înainte de a începe, acordați atenție următoarelor puncte:

2. A crea fișier nou cu extensia htaccess, trebuie să deschideți notepad sau altul editor de text, scrieți codul, salvați fișierul, specificând extensia .htaccess (punct în față). Apoi rămâne să-l aruncăm în directorul pentru care a fost destinat.

3. Syntax.htaccess

Căile către fișiere (directoare) sunt specificate începând de la rădăcina serverului.

DirectoryIndex /home/st5155/www/data/home.html

Dacă configurați fișierul htaccess aflat în folderul rădăcină al site-ului, căile sunt specificate din rădăcina acestui folder.

DirectoryIndex /home.html

Domeniile sunt scrise cu protocolul http:// sau https://

Redirecționare / http://your-sait.ru

Fișierul are numele „punct” htaccess.

Utilizați semnul # pentru a crea o linie comentată.

Cel mai convenabil este să editați fișierul folosind editorul AkelPad inclus în Comandant total, selectați-l și apăsați F4.

Redirecționare simplă - directivă de redirecționare

1. Redirecționare către pagini noi de site

Dacă paginile de pe site au fost mutate la adrese noi, atunci utilizatorul sau robotul de căutare, după ce a contactat adresa veche, probabil că nu le va vedea. Pentru a lipi adresele vechi și noi ale paginilor, puteți folosi o simplă redirecționare 301. Pentru a face acest lucru, în fișierul de configurare htaccess trebuie scris următorul cod:

Redirecționare 301 /staraya.html http://vash-sait.ru/novaya.html

2. Aducerea fluxurilor într-un format comun

Obișnuia să fie diverse formate fluxuri precum: Atom, RSS, Rdf. Astăzi, RSS este principalul și cel mai popular dintre ele, așa că se poate avea grijă să se asigure că alte formate sunt redirecționate către unul. Acesta utilizează, de asemenea, fișierul htaccess și următorul cod:

RedirectMatch 301 /feed/(atom|rdf|rss|rss2)/?$ http://your-sait.ru/feed/

Redirecționare complexă - directivă RewriteRule

1. Redirecționarea unui domeniu de la www la non-www.

Foarte des trebuie să utilizați o redirecționare 301 în htaccess pentru a lipi domeniile cu www și fără www. Inainte de motoare de căutare considerau astfel de adrese ca fiind complet diferite și le priveau ca site-uri diferite. Astăzi, sarcina de lipire este atribuită robotului de căutare, dar nu va fi niciodată de prisos să indicați oglinda corectă. În plus, ei înșiși nu vor avea nicio confuzie.

Opțiuni +FollowSymLinks RewriteEngine On RewriteCond %(HTTP_HOST) ^www.vash-sait\.ru$ RewriteRule ^(.*)$ http://vash-sait.ru/$1

2. Redirecționarea vizitatorilor către diferite pagini în funcție de adresa IP a vizitatorului.

În htaccess, este posibil să specificați la ce pagină va fi redirecționat utilizatorul cu o anumită adresă IP. De exemplu, redirecționarea vizitatorilor cu adresa IP 183.11.101.1 către pagina kontakt.html

SetEnvIf REMOTE_ADDR 183.11.101.1 REDIR="redir" RewriteCond %(REDIR) redir RewriteRule ^/$ /kontakt.html

3. Redirecționați când actualizați o resursă web

În timpul testării sau actualizării resursei, utilizatorul nu va putea ajunge la site. Cu toate acestea, ar fi greșit să nu-l avertizam despre acest lucru. În .htaccess, puteți scrie cod care va redirecționa utilizatorul către o pagină de informații care descrie esența problemei (motive, calendar etc.).

RewriteEngine on RewriteCond %(REQUEST_URI) !/info.html$ RewriteCond %(REMOTE_HOST) !^14\.124\.354\.80 RewriteRule $ http://your-sait.ru/info.html

Unde 14.124.354.80 - înlocuiți cu adresa dvs. IP.

4. Protecție Hotlink

Nu este un secret pentru nimeni că astăzi tot mai multe informații sunt furate de pe site-uri web. Uneori doar text și alteori împreună cu imagini grafice. Și de fiecare dată când un vizitator vine pe un site terță parte, aceste imagini vor fi încărcate de pe găzduirea dvs., creând o încărcare și arderea traficului. Pentru a preveni acest lucru, adăugați următorul cod:

RewriteEngine On RewriteCond %(HTTP_REFERER) !^$ RewriteCond %(HTTP_REFERER) !^http://([ -a-z0-9] \.)?your-sait\.ru RewriteRule \.(gif|jpe?g| png)$ -

În exemplul de mai sus, pe site va apărea o eroare 403 la încărcarea imaginii, dacă doriți ca o anumită imagine să fie afișată în locul imaginii, atunci ultima linieînlocuiți cu următoarele:

RewriteRule \.(jpg|png|gif)$ http://your-sait.ru/images/imageinfo.jpg

5. Redirecționează către https securizat-compus

În .htaccess, puteți configura o redirecționare către o conexiune https securizată, astfel încât toți utilizatorii să lucreze numai prin intermediul acest protocol, care garantează securitatea și fiabilitatea transferului de date între server și client.

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

6. Înlocuirea automată a unei bare oblice la sfârșitul adresei.

Există situații foarte frecvente când URL-ul se termină cu numele directorului: http://your-sait.ru/images/raznoe

Apache poate remedia singur eroarea și poate face o redirecționare 301 adăugând bara oblică lipsă la link. Astfel, utilizatorul nu va simți nicio diferență și va primi ca răspuns pagina necesară. Dar va dura de două ori mai mult pentru a finaliza o astfel de acțiune. Următorul cod va adăuga întotdeauna / la sfârșitul adresei.

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

7. Blocarea utilizatorilor care vin de pe un anumit site

Dacă proprietarul site-ului nu dorește ca resursa sa să fie vizitată de utilizatorii care s-au autentificat dintr-un anumit domeniu și trebuie să blocheze accesul, htaccess este, de asemenea, gata să ajute. Puteți bloca traficul de pe anumite site-uri folosind o pagină 403 sau „interzice accesul”. Util această setare atunci când pe site-ul dvs. au apărut link-uri de pe site-uri cu conținut interzis și traficul ajunge către site-ul dvs. prin intermediul acestora.

RewriteEngine pe RewriteCond %(HTTP_REFERER) zapretnui-sait.com RewriteCond %(HTTP_REFERER) zapretnui-sait.com RewriteRule .* - [F]

Pagini index - directivă DirectoryIndex

1. Modificarea paginii de index încărcate implicit

De obicei paginile de index implicite sunt index.htm, index.php sau index.html, la accesarea directorului site-ului, aceste fișiere sunt căutate imediat. Dar, dacă este necesar, puteți redefini pagina de index la oricare alta. O sarcină similară este de asemenea rezolvată folosind fișierul htaccess.

DirectoryIndex pagina mea.html

Este posibil să specificați două sau mai multe pagini. Trebuie avut în vedere că acestea vor fi căutate în ordinea în care sunt listate în fișierul de configurare după directiva DirectoryIndex.

DirectoryIndex index.shtml index3.php index.html index.htm

Gestionarea erorilor - Directiva ErrorDocument

1. Pagina de utilizator greșeli

În ciuda faptului că multe site-uri încă folosesc pagina de eroare standard 404, este puțin probabil să-l mulțumească pe utilizatorul care nu a obținut rezultatul așteptat și în schimb vede informații care sunt de neînțeles pentru el. Este necesar să propuneți o pagină care să se potrivească cu stilul principal, care va afișa mai mult informatii detaliate despre motivele executării nereușite a cererii. Pentru a face acest lucru, puteți specifica în htaccess ce fișier să încărcați în locul paginii standard de eroare 404.

ErrorDocument 404 „/404.html”

2. Crearea propriilor pagini de eroare

Pentru cei care s-au săturat de paginile obișnuite care afișează o descriere a erorilor apărute pe site, există posibilitatea de a-și folosi propriile spații libere. Trebuie doar să creați singur mai multe fișiere *.html, cu conținutul necesar, și să faceți o intrare în fișierul htaccess.

ErrorDocument 401 /errors401.html ErrorDocument 403 /errors403.html ErrorDocument 404 /errors404.html ErrorDocument 500 /errors505.html

Pentru a ști ce să puneți în fiecare dintre paginile de eroare, vom descrie pe scurt semnificațiile acestora.

  • 401 - Este necesară autorizarea
  • 403 - Utilizator neautentificat, acces refuzat (Interzis)
  • 404 - Documentul solicitat (fișier, director) nu a fost găsit (Negăsit)
  • 500 - Eroare internă server - eroare de script sau eroare în sintaxa fișierului .htaccess - (Eroare internă a serverului)

Definiție codificare

1. Determinarea codificării în care serverul „da” fișiere

Pentru a împiedica utilizatorul să afișeze caractere care sunt de neînțeles pentru el, din care nu este posibilă citirea cuvintelor, trebuie specificată codificarea corectă. Chiar dacă nu există etichetă< Мета http-equiv = "Content-Type">textul de pe pagină va fi întotdeauna corect și fișierul htaccess va ajuta din nou în acest sens.

AddDefaultCharset UTF-8

2. Determinarea codificării fișierelor încărcate

O situație similară poate apărea atunci când un utilizator încarcă un fișier pe server și conținutul acestuia poate fi recodat. Pentru a utiliza codarea necesară, htaccess trebuie să conțină un cod care indică faptul că toate fișierele încărcate trebuie să fie deschise cu codificare UTF-8.

CharsetSourceEnc UTF-8

Gestionarea accesului la directoare și fișiere

1. Interziceți accesul la toate fișierele

Cel mai simplu mod de a preveni vizualizarea unui fișier este să setați o parolă, dar aceasta nu este întotdeauna suficientă. În unele cazuri, utilizatorul nu ar trebui să aibă drepturi de a vizualiza fișiere sau directoare (de exemplu, trebuie să blocați directoarele de sistem, modificările la care pot agrava performanța serverului). Fișierul htaccess conține o bucată de cod care privează toate privilegiile utilizatorului.

2. Permite accesul de la IP specific

Permite accesul de la un anumit ip: ordinul permite refuzul
nega de la toti
permite de la<ваш ip>În acest caz, <ваш ip> denotă o anumită adresă.
De exemplu: comanda permite refuzul
nega de la toti
permite de la 192.126.12.199

Interziceți accesul de la o anumită ip: ordinul permite refuzul
nega de la toti
nega de la<ваш ip>Utilizare <ваш ip> similar cu exemplul de mai sus.

În funcție de ordinea în care sunt specificate directivele, logica funcționării serverului se modifică. Dacă Deny, Allow, atunci accesul de la toate IP-urile, cu excepția celor specificate, este interzis, dacă Allow, Deny accesul este permis de la toate IP-urile, cu excepția celor specificate. Urmează secțiunile de descriere pentru acces și refuz. Cuvânt cheie toateînseamnă din toate IP

De exemplu, vrem să refuzăm (blochăm) accesul de la IP 81.222.144.12 și 81.222.144.20 și permiteți tot restul pe care trebuie să îl adăugăm la .htaccess următorul cod:

Comanda Permite, Respinge
Permite de la toți
Refuza de la 81.222.144.12, 81.222.144.20

Pentru situația inversă când vrem să refuzăm accesul tuturor IP cu excepția 81.222.144.12 și 81.222.144.20, trebuie să adăugăm la .htaccess următorul cod:

Comanda Respinge, Permite
Negați de la toți
Permite de la 81.222.144.12, 81.222.144.20

Pentru a permite doar anumite gazde sau grupuri de gazde să acceseze serverul, gazda poate fi specificată în oricare dintre următoarele formate:

  • pentru un nume de domeniu (sau o parte a acestuia): Permite de la apache.org
    Permiteți din .net example.edu
  • pentru adresa ip: Permite de la 10.1.2.3
    Permite de la 192.168.1.104 192.168.1.205
  • pentru o parte a adresei ip:
    Permite de la 10.1
    Permite de la 10 172.20 192.168.2
  • pentru perechea plasă/mască: Permite de la 10.1.0.0/255.255.0.0
  • pentru specificațiile net/nnn CIDR:
    Permite de la 10.1.0.0/16

Blocarea unui grup de fișiere prin mască:
comanda permite, refuza
nega de la toti
Specifică accesul la un fișier prin extensia acestuia.
De exemplu, interzicerea accesului la fișierele cu extensii „inc” pentru vizitatorii web:

comanda permite, refuza
nega de la toti

În acest exemplu, serverul web Apache însuși poate accesa fișiere cu astfel de extensii.

Interzicerea unui anumit fișier:
Puteți interzice un anumit fișier după numele și extensia acestuia.
comanda permite, refuza
nega de la toti
În acest exemplu, există o interdicție privind accesarea fișierului config.inc.php.

Parola director: AuthName „Zonă privată”
AuthType Basic
necesită utilizator valid
Valoarea AuthName va fi afișată vizitatorului și poate fi folosită pentru a clarifica solicitarea de autorizare. Valoarea AuthUserFile indică locația în care este stocat fișierul cu parole pentru accesarea acestui director. Acest fișier este creat de utilitarul special htpasswd.exe.

De exemplu, în directorul pe care îl protejăm cu o parolă, creăm următorul .htaccess: AuthName „Numai pentru utilizatorii înregistrați”
AuthType Basic
AuthUserFile /pub/site.ru/.htpasswd
necesită utilizator valid
În acest exemplu, atunci când solicită un director, vizitatorul va citi expresia „Numai pentru utilizatorii înregistrați”, fișierul cu parolele de acces ar trebui să fie în directorul /pub/site.ru/ și să fie numit.htapasswd . Directorul este specificat de la rădăcina serverului, dacă ați setat incorect directorul, atunci Apache nu va putea citi fișierul .htpasswd și nimeni nu va avea acces la acest director.

Parola pentru un singur fișier:Mar, 09 februarie 2010 15:44:59 GMT+0300
Similar cu protecția cu parolă a unui întreg director, puteți seta o parolă pentru un singur fișier.
Un exemplu de setare a unei parole pentru un fișier private.zip:
AuthName „Zona utilizatorilor”
AuthType Basic
AuthUserFile /pub/home/your_login/.htpasswd

Parola pentru un grup de fișiere:
În mod similar, folosind , puteți seta parole prin mască de fișiere.
Un exemplu de setare a unei parole pentru accesul la toate fișierele cu extensia „sql”:

AuthName „Zona utilizatorilor”
AuthType Basic
AuthUserFile /pub/home/your_login/.htpasswd