Znanja Jednostavne upute za rad s uslugom Profitserver
Glavni Znanja Konfiguriranje .htaccess datoteke

Konfiguriranje .htaccess datoteke


U ovom ćemo članku istražiti temeljna načela korištenja datoteke .htaccess, koja je ključna za poboljšanje SEO-a. Ova datoteka osigurava ispravno indeksiranje stranica od strane tražilica. Naučit ćemo kako upravljati preusmjeravanjima, konfigurirati sigurnost i poboljšati performanse. Osim toga, pružit ćemo savjete o tome kako samostalno konfigurirati ovu datoteku.

Zašto je .htaccess potreban

Datoteka .htaccess djeluje kao neka vrsta "daljinskog upravljanja" za web programere na Apache poslužiteljima. Nudi praktične alate za podešavanje različitih parametara i upravljanje ponašanjem web stranice. Kada je izravan pristup glavnim konfiguracijskim datotekama poslužitelja nedostupan (kao što je često slučaj s virtualnim hostingom, na primjer), .htaccess postaje koristan alat za unošenje potrebnih promjena.

Htaccess se često nalazi u korijenskoj mapi vaše stranice ili u onim mapama gdje je potrebna posebna konfiguracija. Na primjer, ako koristite WordPress, konfiguracija se može izvršiti putem Yoast SEO dodatka, o čemu smo govorili u članku o Konfiguriranje robots.txt. U ostalim slučajevima dovoljno je otići u traženu mapu i urediti postojeću .htaccess datoteku ili je kreirati ako još nije izrađena.

Konfiguriranje datoteke .htaccess

301 Preusmjeri htaccess

Preusmjeravanje 301 u datoteci .htaccess može se usporediti s trajnim preusmjeravanjem na web stranici. Obavještava tražilice i preglednike da se stranica sada trajno nalazi na novoj adresi i predlaže ažuriranje oznaka i indeksiranja. Takvo se preusmjeravanje obično koristi kada se stranica premjesti ili izbriše kako bi se zadržao njezin rang u rezultatima pretraživanja i preusmjerili posjetitelji na novu lokaciju.

Da biste aktivirali preusmjeravanja, morate omogućiti odgovarajuću naredbu u datoteci .htaccess:

RewriteEngine on

Nakon toga možete konfigurirati najjednostavniji oblik preusmjeravanja:

<IfModule mod_rewrite.c>
RewriteEngine On
Redirect 301 /old-page.html /new-page.html
</IfModule>

Slično preusmjeravanje pomoću RedirectPermanent direktiva izgleda ovako:

<IfModule mod_rewrite.c>
RewriteEngine On
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
</IfModule>

Ovo su metode preusmjeravanja koje je najlakše konfigurirati. Razmotrimo konfiguraciju koja koristi druge, naprednije vrste preusmjeravanja s 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>

302 preusmjeravanje .htaccess, koje označava privremeno preseljenje, susreće se puno rjeđe. Evo primjera takve postavke:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^old-page.html$ /new-page.html [R=302,L]
</IfModule>

Direktiva ErrorDocument

Ova vam postavka omogućuje da kontrolirate što korisnik vidi kada se na vašoj stranici pojave HTTP pogreške. Umjesto standardne poruke o pogrešci, možete prikazati vlastitu stranicu koja će posjetitelju biti informativnija i pomoći mu da shvati što se dogodilo. Jednostavno slijedite ovu sintaksu za upotrebu:

ErrorDocument <error_code> <URL_page>

Na primjer,

ErrorDocument 404 /errors/not_found.html

Znači da kada a 404 dolazi do pogreške, stranica na /errors/not_found.html otvorit će se. Apsolutni URL-ovi navedeni su na sličan način:

ErrorDocument 500 http://example.com/errors/server_error.html

Ovaj primjer ukazuje na prikaz server_error.html stranica na http://example.com/errors/ u slučaju a 500 greška.

Uskraćivanje pristupa imeniku web-mjesta

Datoteka .htaccess ima naredbu Deny iz svih, koji pomaže uskratiti pristup određenim mapama ili datotekama na vašem web poslužitelju. Ovo može biti korisno ako želite sakriti privatne informacije ili važne datoteke od posjetitelja stranice kako biste osigurali sigurnost podataka.

Da biste onemogućili popis (prikaz svih dostupnih imenika), morate dodati redak:

Options -Indexes

Primjer blokiranja pristupa određenom imeniku izgleda ovako:

<Directory /path_to_your_directory>
Order Deny,Allow
Deny from all
</Directory>

Slično, možete zabraniti pristup jednoj datoteci:

<Files "file.php">
Order Deny,Allow
Deny from all
</Files>

Ili za niz datoteka prema ekstenziji:

<FilesMatch "\.(txt|log|bak)$"> # Select the desired extensions, in the example: txt, log, bak
Order Deny,Allow
Deny from all
</FilesMatch>

Blokiranje pristupa putem IP-a

Blokiranje pristupa IP-om u datoteci .htaccess je metoda koja vam omogućuje da ograničite pristup vašoj web stranici za određene IP adrese ili njihove grupe. Ovo može biti korisno ako želite spriječiti pristup vašem web-mjestu ili njegovim određenim dijelovima za određene osobe ili neželjene robote.

Blokiranje jedne IP adrese vrši se naredbom:

Order Deny,Allow
Allow from all
Deny from 11.22.33.44

Blokiranje nekoliko IP adresa vrši se na sličan način dupliciranjem "Deny iz" s traženim adresama.

Za blokiranje niza IP adresa:

Order Deny,Allow
Allow from all
Deny from 11.11.11.11/24

Da biste omogućili pristup samo za određene IP adrese, dodajte kod:

Order Deny,Allow
Deny from all
Allow from 11.22.33.44

Za potpunu zabranu pristupa koristite direktivu Deny iz svih, a za blokiranje adresa maskom navedite Deny iz 11.22.

Gdje, 11.22 je IP adresa maska.

Blokiranje posjetitelja pomoću korisničkog agenta

Blokiranje korisnika pomoću korisničkog agenta u .htaccess datoteci metoda je kontroliranja tko može pristupiti vašem web poslužitelju na temelju informacija o pregledniku koji posjetitelj koristi. Niz korisničkog agenta sadrži podatke o pregledniku koji osoba koristi za interakciju s vašim poslužiteljem, a zahvaljujući tim informacijama možete ograničiti pristup određenim korisnicima.

Najčešći način blokiranja od strane User-Agenta je korištenje 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>

U ovom primjeru:

  1. RewriteCond %{HTTP_USER_AGENT} koristi se za provjeru niza User-Agent.
  2. ^Bot1, ^Bot2, ^Bot3 primjeri su nizova korisničkih agenata koje želimo blokirati. Modifikatori NC pokazuju da usporedba ne bi trebala razlikovati velika i mala slova.
  3. RewriteRule ^.*$ - [F,L] primjenjuje se na zahtjev ako je ispunjen bilo koji od uvjeta RewriteCond. Šalje odgovor sa statusnim kodom 403 Zabranjeno (F) i zaustavlja obradu pravila (L).

Predmemoriranje u htaccess

Konfiguriranje predmemoriranja putem .htaccess datoteke pomaže ubrzati vaše web mjesto tako da se brže učitava korisnicima. Funkcionira ovako: određene datoteke, poput slika, CSS stilova i JavaScript skripti, pohranjuju se u predmemoriju preglednika korisnika nakon prvog učitavanja. Sada preglednik može koristiti te datoteke iz predmemorije, umjesto da ih ponovno učitava s poslužitelja svaki put kada korisnik posjeti stranicu. To skraćuje vrijeme učitavanja i poboljšava performanse stranice.

Razmotrite primjer:

# 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>

Za resurse koji se često ažuriraju, s druge strane, potrebno je onemogućiti predmemoriju:

# 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>

Optimiziranje performansi stranice

The mod_deflate i mod_gzip moduli u Apacheu pomažu komprimirati informacije koje poslužitelj šalje korisničkim uređajima. Zbog toga su datoteke manje, što zauzvrat ubrzava učitavanje stranice. Međutim, važno je zapamtiti da se podrška i konfiguracija ovih modula mogu razlikovati ovisno o vašem poslužitelju.

Primjer korištenja 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>

Primjer za 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>

Razgovarali smo o najčešće korištenim direktivama. Možete se upoznati sa svim mogućnostima datoteke u službena dokumentacija.

Kako provjeriti funkcionalnost .htaccess datoteke

Kako biste provjerili radi li vaša .htaccess datoteka na stranici, možete izvršiti sljedeće korake:

  1. Namjerno promijenite .htaccess datoteku s pogreškom. Kao odgovor, poslužitelj bi trebao dati pogrešku. Ova metoda pokazuje primjenjuje li se operacija datoteke općenito na poslužitelju.
  2. Provjerite funkcionalnost određenih promjena koje ste napravili. Na primjer, napravite manju prilagodbu jednog od parametara i procijenite prisutnost promjena.
  3. Provjerite kod statusa stranice ako su promjene povezane s odgovorom poslužitelja. Kako to učiniti, prethodno smo opisali u članku Kodovi HTTP grešaka: potpuni popis grešaka poslužitelja.
  4. Pogledajte zapisnike poslužitelja. Prikazuju sve greške vezane uz rad .htaccess datoteke.
  5. Provedite testiranje pomoću online usluga ili alata.

Važno je razumjeti da za provjeru funkcionalnosti .htaccess datoteke ne morate izvršiti sve korake odjednom. Dovoljno je odabrati najprikladniju metodu s popisa i koristiti je.

Zaključak

Konfiguriranje .htaccess datoteke važan je korak u optimizaciji i zaštiti vašeg Apache poslužitelja. Istražili smo kako ova datoteka pomaže u upravljanju preusmjeravanjima, komprimiranju sadržaja i osiguravanju sigurnosti. Nakon što svladate rad s .htaccessom, dobivate moćan alat za poboljšanje performansi i funkcionalnosti web stranica.

❮ Prethodni članak Postavljanje FTP poslužitelja
Sljedeći članak ❯ Kako konfigurirati web poslužitelj (Apache-PHP-MySQL/MariaDB) na Linuxu

Pitajte nas o VPS-u

Uvijek smo spremni odgovoriti na vaša pitanja u bilo koje doba dana i noći.