În acest articol, vom explora principiile fundamentale ale utilizării fișierului .htaccess, care este crucial pentru îmbunătățirea SEO. Acest fișier asigură indexarea corectă a paginilor de către motoarele de căutare. Vom învăța cum să gestionăm redirecționările, să configuram securitatea și să creștem performanța. În plus, vom oferi sfaturi despre cum să configurați acest fișier în mod independent.
De ce este nevoie de .htaccess
Fișierul .htaccess acționează ca un fel de „control de la distanță” pentru dezvoltatorii web de pe serverele Apache. Oferă instrumente convenabile pentru ajustarea diverșilor parametri și gestionarea comportamentului unui site web. Atunci când accesul direct la fișierele de configurare principale ale serverului nu este disponibil (cum este adesea cazul în cazul găzduirii virtuale, de exemplu), .htaccess devine un instrument util pentru efectuarea modificărilor necesare.
Htaccess este adesea localizat în folderul rădăcină al site-ului dvs. sau în acele foldere în care este necesară o configurație specială. De exemplu, dacă utilizați WordPress, configurarea se poate face prin plugin-ul Yoast SEO, despre care am discutat în articolul despre Configurarea robots.txt. În alte cazuri, este suficient să mergeți în folderul necesar și să editați fișierul .htaccess existent sau să îl creați dacă nu a fost încă creat.
Configurarea fișierului .htaccess
301 Redirecționare htaccess
O redirecționare 301 în fișierul .htaccess poate fi asemănată cu o redirecționare permanentă pe un site web. Acesta informează motoarele de căutare și browserele că pagina se află acum permanent la o nouă adresă și sugerează actualizarea marcajelor și indexarea. O astfel de redirecționare este utilizată de obicei atunci când o pagină este mutată sau ștearsă pentru a-și păstra clasarea în rezultatele căutării și a redirecționa vizitatorii către noua locație.
Pentru a activa redirecționările, trebuie să activați comanda corespunzătoare în fișierul .htaccess:
RewriteEngine on
După aceea, puteți configura cea mai simplă formă de redirecționare:
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect 301 /old-page.html /new-page.html
</IfModule>
O redirecționare similară folosind RedirectPermanent directiva arată astfel:
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
</IfModule>
Acestea sunt cele mai simple metode de redirecționare de configurat. Să luăm în considerare o configurație care utilizează alte tipuri de redirecționări mai avansate cu mod_rewrite modul:
<IfModule mod_rewrite.c>
RewriteEngine On
# Redirecting from one page to another
RewriteRule ^old-page.html$ http://www.example.com/new-page.html [R=301,L]
# Redirecting all traffic from one domain to another
RewriteCond %{HTTP_HOST} ^oldsite.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.oldsite.com$
RewriteRule ^(.*)$ http://www.newsite.com/$1 [R=301,L]
# Redirecting from www to non-www (or vice versa)
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
# Redirecting from HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
# Redirecting from one subdomain to another
RewriteCond %{HTTP_HOST} ^subdomain1.example.com$
RewriteRule ^(.*)$ http://subdomain2.example.com/$1 [R=301,L]
</IfModule>
Un .htaccess de redirecționare 302, care indică o relocare temporară, este întâlnit mult mai rar. Iată un exemplu de astfel de setare:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^old-page.html$ /new-page.html [R=302,L]
</IfModule>
Directiva ErrorDocument
Această setare vă permite să controlați ce vede utilizatorul atunci când apar erori HTTP pe site-ul dvs. În loc de mesajul de eroare standard, puteți afișa propria pagină, care va fi mai informativă pentru vizitator și va ajuta să înțeleagă ce s-a întâmplat. Pur și simplu urmați această sintaxă pentru utilizare:
ErrorDocument <error_code> <URL_page>
De exemplu,
ErrorDocument 404 /errors/not_found.html
Înseamnă că atunci când a 404 apare o eroare, pagina la /errors/not_found.html va fi deschis. Adresele URL absolute sunt specificate în mod similar:
ErrorDocument 500 http://example.com/errors/server_error.html
Acest exemplu indică afișarea server_error.html Pagina de la http://example.com/errors/ în cazul unui 500 eroare.
Interzicerea accesului la un director de site
Fișierul .htaccess are comanda Negati de la toti, care ajută la interzicerea accesului la anumite foldere sau fișiere de pe serverul dvs. web. Acest lucru poate fi util dacă doriți să ascundeți informațiile private sau fișierele importante de la vizitatorii site-ului pentru a asigura securitatea datelor.
Pentru a dezactiva listarea (vizualizarea tuturor directoarelor disponibile), trebuie să adăugați linia:
Options -Indexes
Un exemplu de blocare a accesului la un anumit director arată astfel:
<Directory /path_to_your_directory>
Order Deny,Allow
Deny from all
</Directory>
În mod similar, puteți refuza accesul la un singur fișier:
<Files "file.php">
Order Deny,Allow
Deny from all
</Files>
Sau pentru o serie de fișiere prin extensie:
<FilesMatch "\.(txt|log|bak)$"> # Select the desired extensions, in the example: txt, log, bak
Order Deny,Allow
Deny from all
</FilesMatch>
Blocarea accesului prin IP
Blocarea accesului prin IP în fișierul .htaccess este o metodă care vă permite să restricționați accesul la site-ul dvs. web pentru anumite adrese IP sau grupurile acestora. Acest lucru poate fi util dacă doriți să împiedicați accesul la site-ul dvs. sau la părțile sale specifice pentru anumite persoane sau roboți nedoriți.
Blocarea unei singure adrese IP se face cu comanda:
Order Deny,Allow
Allow from all
Deny from 11.22.33.44
Blocarea mai multor adrese IP se face în mod similar prin duplicarea „Nega de la" rând cu adresele solicitate.
Pentru blocarea unei game de adrese IP:
Order Deny,Allow
Allow from all
Deny from 11.11.11.11/24
Pentru a permite accesul numai pentru anumite IP-uri, adăugați codul:
Order Deny,Allow
Deny from all
Allow from 11.22.33.44
Pentru a refuza complet accesul, utilizați directiva Negati de la toti, iar pentru blocarea adreselor prin mască, specificați Refuza de la 11.22.
Unde, 11.22 este adresa IP masca.
Blocarea vizitatorilor de către User-Agent
Blocarea utilizatorilor de către User-Agent în fișierul .htaccess este o metodă de a controla cine vă poate accesa serverul web pe baza informațiilor despre browserul pe care îl folosește vizitatorul. Șirul User-Agent conține date despre browserul pe care o persoană îl folosește pentru a interacționa cu serverul dvs. și, datorită acestor informații, puteți restricționa accesul anumitor utilizatori.
Cea mai comună modalitate de a bloca de către User-Agent este utilizarea mod_rewrite:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^Bot1 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot2 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot3 [NC]
RewriteRule ^.*$ - [F,L]
</IfModule>
În acest exemplu:
- RewriteCond %{HTTP_USER_AGENT} este folosit pentru a verifica șirul User-Agent.
- ^Bot1, ^Bot2, ^Bot3 sunt exemple de șiruri User-Agent pe care dorim să le blocăm. Modificatorii NC indică faptul că comparația ar trebui să nu țină seama de majuscule și minuscule.
- RewriteRule ^.*$ - [F,L] se aplică cererii dacă oricare dintre condițiile RewriteCond este îndeplinită. Trimite un răspuns cu codul de stare 403 Forbidden (F) și oprește procesarea regulilor (L).
Memorarea în cache în htaccess
Configurarea memoriei cache prin fișierul .htaccess ajută la accelerarea site-ului dvs., făcându-l să se încarce mai rapid pentru utilizatori. Funcționează astfel: anumite fișiere, cum ar fi imagini, stiluri CSS și scripturi JavaScript, sunt stocate în memoria cache a browserului utilizatorului după prima încărcare. Acum browserul poate folosi aceste fișiere din cache, în loc să le reîncarce de pe server de fiecare dată când utilizatorul vizitează o pagină. Acest lucru reduce timpul de încărcare și îmbunătățește performanța site-ului.
Luați în considerare un exemplu:
# Enable caching for images for 1 month
<FilesMatch "\.(jpg|jpeg|png|gif|svg)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>
# Enable caching for CSS and JavaScript for 1 week
<FilesMatch "\.(css|js)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
Pentru resursele care sunt actualizate frecvent, pe de altă parte, este necesar să dezactivați memoria cache:
# Excluding caching for HTML pages and XML files
<FilesMatch "\.(html|xml)$">
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "0"
</FilesMatch>
Optimizarea performanței site-ului
mod_deflate și mod_gzip modulele din Apache ajută la comprimarea informațiilor pe care serverul le trimite către dispozitivele utilizatorilor. Acest lucru face ca fișierele să fie mai mici, ceea ce, la rândul său, accelerează încărcarea paginii. Cu toate acestea, este important să rețineți că suportul și configurația acestor module pot varia în funcție de serverul dvs.
Exemplu de utilizare a mod_deflate modul:
<IfModule mod_deflate.c>
# Compressing text file types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
Exemplu pentru mod_gzip:
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$ # Enabling compression for files with extensions .html, .txt, .css, .js, .php, .pl
mod_gzip_item_include mime ^application/x-javascript.* # Enabling compression for MIME types starting with application/x-javascript
mod_gzip_item_include mime ^text/.* # Enabling compression for MIME types starting with text/
mod_gzip_item_exclude mime ^image/.* # Excluding from compression MIME types starting with image/
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* # Excluding already compressed data (responses with the Content-Encoding: gzip header)
</IfModule>
Am discutat despre cele mai frecvent utilizate directive. Vă puteți familiariza cu toate capacitățile fișierului din documentația oficială.
Cum se verifică funcționalitatea fișierului .htaccess
Pentru a verifica dacă fișierul dvs. .htaccess funcționează pe site, puteți efectua următorii pași:
- Schimbați în mod intenționat fișierul .htaccess cu o eroare. Ca răspuns, serverul ar trebui să dea o eroare. Această metodă arată dacă operațiunea fișierului este aplicată în general pe server.
- Verificați funcționalitatea modificărilor specifice pe care le-ați făcut. De exemplu, faceți o ajustare minoră a unuia dintre parametri și evaluați prezența modificărilor.
- Verificați codul de stare al paginii dacă modificările sunt legate de răspunsul serverului. Cum să faceți acest lucru, am descris anterior în articol Coduri de eroare HTTP: o listă completă a erorilor de server.
- Consultați jurnalele serverului. Acestea afișează toate erorile legate de funcționarea fișierului .htaccess.
- Efectuați teste folosind servicii sau instrumente online.
Este important să înțelegeți că pentru a verifica funcționalitatea fișierului .htaccess, nu trebuie să efectuați toți pașii deodată. Este suficient să alegi cea mai potrivită metodă din listă și să o folosești.
Concluzie
Configurarea fișierului .htaccess este un pas important în optimizarea și protejarea serverului dvs. Apache. Am explorat modul în care acest fișier ajută la gestionarea redirecționărilor, la comprimarea conținutului și la asigurarea securității. Odată ce stăpâniți lucrul cu .htaccess, obțineți un instrument puternic pentru îmbunătățirea performanței și funcționalității site-urilor web.