Baza znanja Jednostavna uputstva za rad sa uslugom Profitserver
glavni Baza znanja Konfiguriranje .htaccess datoteke

Konfiguriranje .htaccess datoteke


U ovom članku ćemo istražiti osnovne principe korištenja .htaccess datoteke, koja je ključna za poboljšanje SEO-a. Ova datoteka osigurava pravilno indeksiranje stranica od strane pretraživača. Naučit ćemo kako upravljati preusmjeravanjem, konfigurirati sigurnost i poboljšati performanse. Osim toga, dat ćemo savjete o tome kako samostalno konfigurirati ovu datoteku.

Zašto je potreban .htaccess

Datoteka .htaccess djeluje kao neka vrsta "daljinske kontrole" za web programere na Apache serverima. Nudi praktične alate za podešavanje različitih parametara i upravljanje ponašanjem web stranice. Kada direktan pristup glavnim konfiguracionim fajlovima servera nije dostupan (kao što je često slučaj sa virtuelnim hostingom, na primer), .htaccess postaje koristan alat za unošenje neophodnih promena.

Htaccess se često nalazi u root folderu vaše stranice ili u onim folderima gdje je potrebna posebna konfiguracija. Na primjer, ako koristite WordPress, konfiguracija se može obaviti preko Yoast SEO dodatka, o čemu smo govorili u članku o Konfiguriranje robots.txt. U drugim slučajevima, dovoljno je otići u traženi folder i urediti postojeći .htaccess fajl ili ga kreirati ako još nije kreiran.

Konfiguriranje .htaccess datoteke

301 Preusmjeravanje htaccess

Preusmjeravanje 301 u datoteci .htaccess može se uporediti sa trajnim preusmjeravanjem na web stranici. Obavještava pretraživače i pretraživače da je stranica sada trajno locirana na novoj adresi i predlaže ažuriranje oznaka i indeksiranje. Takvo preusmjeravanje se obično koristi kada se stranica premjesti ili obriše kako bi se sačuvao njen rang u rezultatima pretraživanja i preusmjerili posjetitelje 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 koristeći 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 tipove preusmjeravanja sa 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, koji ukazuje na privremeno preseljenje, susrećemo se mnogo rjeđe. Evo primjera takve postavke:

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

Directive ErrorDocument

Ova postavka vam omogućava da kontrolirate šta korisnik vidi kada se na vašoj web lokaciji pojave HTTP greške. Umjesto standardne poruke o grešci, možete prikazati vlastitu stranicu, koja će biti informativnija za posjetitelja i pomoći im da shvate šta se dogodilo. Jednostavno slijedite ovu sintaksu za korištenje:

ErrorDocument <error_code> <URL_page>

Na primjer,

ErrorDocument 404 /errors/not_found.html

Znači da kada a 404 dolazi do greške, stranica na /errors/not_found.html će biti otvoren. Apsolutni URL-ovi su specificirani 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.

Odbijanje pristupa direktorijumu sajta

Datoteka .htaccess ima naredbu Odbiti od svih, što pomaže u odbijanju pristupa određenim fasciklama ili datotekama na vašem web serveru. Ovo može biti korisno ako želite sakriti privatne informacije ili važne datoteke od posjetitelja stranice kako biste osigurali sigurnost podataka.

Da onemogućite listing (prikaz svih dostupnih direktorija), morate dodati red:

Options -Indexes

Primjer blokiranja pristupa određenom direktoriju izgleda ovako:

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

Slično, možete odbiti pristup jednom fajlu:

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

Ili za niz fajlova po ekstenzijama:

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

Blokiranje pristupa putem IP adrese u datoteci .htaccess je metoda koja vam omogućava 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šoj web-lokaciji ili njenim određenim dijelovima za određene ljude ili neželjene botove.

Blokiranje jedne IP adrese vrši se naredbom:

Order Deny,Allow
Allow from all
Deny from 11.22.33.44

Blokiranje nekoliko IP adresa se radi na sličan način dupliranjem "Deny from" red sa traženim adresama.

Za blokiranje niza IP adresa:

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

Da dozvolite pristup samo za određene IP adrese, dodajte kod:

Order Deny,Allow
Deny from all
Allow from 11.22.33.44

Za potpuno uskraćivanje pristupa koristite direktivu Odbiti od svih, a za blokiranje adresa po maski navedite Deny od 11.22.

Gde, 11.22 je IP adresa maska.

Blokiranje posjetitelja od strane korisničkog agenta

Blokiranje korisnika od strane korisničkog agenta u datoteci .htaccess je metod kontrole ko može pristupiti vašem web serveru na osnovu informacija o pretraživaču koji posjetitelj koristi. Niz User-Agent sadrži podatke o pretraživaču koji osoba koristi za interakciju sa vašim serverom i zahvaljujući ovim informacijama možete ograničiti pristup određenim korisnicima.

Najčešći način blokiranja od strane korisničkog 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} se koristi za provjeru niza User-Agent.
  2. ^Bot1, ^Bot2, ^Bot3 su primjeri stringova korisničkog agenta koje želimo blokirati. NC modifikatori ukazuju da bi poređenje trebalo biti neosjetljivo na velika i mala slova.
  3. RewriteRule ^.*$ - [F,L] se primjenjuje na zahtjev ako je ispunjen bilo koji od uslova RewriteCond. Šalje odgovor sa statusnim kodom 403 Zabranjeno (F) i zaustavlja obradu pravila (L).

Keširanje u htaccess-u

Konfigurisanje keširanja putem .htaccess datoteke pomaže ubrzanju vaše web lokacije tako što se brže učitava za korisnike. Funkcioniše ovako: određene datoteke, kao što su slike, CSS stilovi i JavaScript skripte, pohranjuju se u keš pretraživača korisnika nakon prvog učitavanja. Sada pretraživač može koristiti ove datoteke iz keša, umjesto da ih ponovo učitava sa servera svaki put kada korisnik posjeti stranicu. Ovo skraćuje vrijeme učitavanja i poboljšava performanse stranice.

Razmotrimo 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 keširanje:

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

Optimizacija performansi sajta

The mod_deflate i mod_gzip moduli u Apacheu pomažu komprimirati informacije koje server šalje uređajima korisnika. To čini datoteke manje veličine, što zauzvrat ubrzava učitavanje stranice. Međutim, važno je zapamtiti da podrška i konfiguracija ovih modula mogu varirati ovisno o vašem serveru.

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

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

  1. Namjerno promijenite .htaccess datoteku sa greškom. Kao odgovor, server bi trebao dati grešku. Ova metoda pokazuje da li se operacija datoteke općenito primjenjuje na serveru.
  2. Provjerite funkcionalnost određenih promjena koje ste napravili. Na primjer, napravite manju prilagodbu jednog od parametara i procijenite prisustvo promjena.
  3. Provjerite statusni kod stranice ako se promjene odnose na odgovor servera. Kako to učiniti, prethodno smo opisali u članku HTTP kodovi grešaka: kompletna lista grešaka servera.
  4. Pogledajte zapisnike servera. Oni prikazuju sve greške vezane za rad .htaccess datoteke.
  5. Provedite testiranje koristeći online usluge ili alate.

Važno je shvatiti da za provjeru funkcionalnosti .htaccess datoteke ne morate izvoditi sve korake odjednom. Dovoljno je odabrati najprikladniju metodu sa liste i koristiti je.

zaključak

Konfigurisanje .htaccess datoteke je važan korak u optimizaciji i zaštiti vašeg Apache servera. Istražili smo kako ova datoteka pomaže u upravljanju preusmjeravanjem, komprimiranju sadržaja i osiguravanju sigurnosti. Kada savladate rad sa .htaccess-om, dobijate moćan alat za poboljšanje performansi i funkcionalnosti web sajtova.

❮ Prethodni članak Podešavanje FTP servera
Sljedeći članak ❯ Kako konfigurirati web server (Apache-PHP-MySQL/MariaDB) na Linuxu

Pitajte nas za VPS

Uvek smo spremni da odgovorimo na vaša pitanja u bilo koje doba dana i noći.