V tomto článku preskúmame základné princípy používania súboru .htaccess, ktorý je rozhodujúci pre zlepšenie SEO. Tento súbor zabezpečuje správne indexovanie stránok vyhľadávacími nástrojmi. Dozvieme sa, ako spravovať presmerovania, konfigurovať zabezpečenie a zvyšovať výkon. Okrem toho vám poskytneme tipy, ako nakonfigurovať tento súbor nezávisle.
Prečo je potrebný .htaccess
Súbor .htaccess funguje ako druh „diaľkového ovládania“ pre vývojárov webu na serveroch Apache. Ponúka pohodlné nástroje na úpravu rôznych parametrov a správu správania webovej stránky. Keď nie je dostupný priamy prístup k hlavným konfiguračným súborom servera (ako je to napríklad často v prípade virtuálneho hostingu), .htaccess sa stáva užitočným nástrojom na vykonanie potrebných zmien.
Htaccess sa často nachádza v koreňovom priečinku vašej lokality alebo v tých priečinkoch, kde je potrebná špeciálna konfigurácia. Ak napríklad používate WordPress, konfiguráciu je možné vykonať pomocou doplnku Yoast SEO, o ktorom sme diskutovali v článku Konfiguruje sa súbor robots.txt. V ostatných prípadoch stačí prejsť do požadovaného priečinka a upraviť existujúci súbor .htaccess, prípadne ho vytvoriť, ak ešte nebol vytvorený.
Konfigurácia súboru .htaccess
301 Presmerovanie htaccess
Presmerovanie 301 v súbore .htaccess možno prirovnať k trvalému presmerovaniu na webovej stránke. Informuje vyhľadávače a prehliadače, že stránka je teraz trvalo umiestnená na novej adrese a navrhuje aktualizáciu záložiek a indexovanie. Takéto presmerovanie sa zvyčajne používa, keď sa stránka presunie alebo odstráni, aby sa zachovalo jej hodnotenie vo výsledkoch vyhľadávania a aby sa návštevníci presmerovali na nové miesto.
Ak chcete aktivovať presmerovania, musíte povoliť príslušný príkaz v súbore .htaccess:
RewriteEngine on
Potom môžete nakonfigurovať najjednoduchšiu formu presmerovania:
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect 301 /old-page.html /new-page.html
</IfModule>
Podobné presmerovanie pomocou Presmerovanie natrvalo smernica vyzerá takto:
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
</IfModule>
Toto sú najjednoduchšie spôsoby konfigurácie presmerovania. Zoberme si konfiguráciu, ktorá používa iné, pokročilejšie typy presmerovaní 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>
S 302 presmerovaním .htaccess, čo naznačuje dočasné premiestnenie, sa stretávame oveľa menej často. Tu je príklad takéhoto nastavenia:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^old-page.html$ /new-page.html [R=302,L]
</IfModule>
Smernica ErrorDocument
Toto nastavenie vám umožňuje kontrolovať, čo používateľ uvidí, keď sa na vašom webe vyskytnú chyby HTTP. Namiesto štandardného chybového hlásenia môžete zobraziť svoju vlastnú stránku, ktorá bude pre návštevníka informatívnejšia a pomôže mu pochopiť, čo sa stalo. Na použitie jednoducho postupujte podľa tejto syntaxe:
ErrorDocument <error_code> <URL_page>
Napríklad,
ErrorDocument 404 /errors/not_found.html
Znamená to, že keď a 404 nastane chyba, stránka na /errors/not_found.html bude otvorená. Absolútne adresy URL sú špecifikované podobne:
ErrorDocument 500 http://example.com/errors/server_error.html
Tento príklad označuje zobrazenie server_error.html stránka na http://example.com/errors/ v prípade a 500 chyba.
Odmietnutie prístupu do adresára lokality
Súbor .htaccess obsahuje príkaz Odoprieť zo všetkých, ktorá pomáha zakázať prístup k určitým priečinkom alebo súborom na vašom webovom serveri. To môže byť užitočné, ak chcete pred návštevníkmi lokality skryť súkromné informácie alebo dôležité súbory, aby ste zaistili bezpečnosť údajov.
Ak chcete zakázať výpis (zobrazenie všetkých dostupných adresárov), musíte pridať riadok:
Options -Indexes
Príklad blokovania prístupu do konkrétneho adresára vyzerá takto:
<Directory /path_to_your_directory>
Order Deny,Allow
Deny from all
</Directory>
Podobne môžete zamietnuť prístup k jednému súboru:
<Files "file.php">
Order Deny,Allow
Deny from all
</Files>
Alebo pre rozsah súborov podľa prípony:
<FilesMatch "\.(txt|log|bak)$"> # Select the desired extensions, in the example: txt, log, bak
Order Deny,Allow
Deny from all
</FilesMatch>
Blokovanie prístupu cez IP
Blokovanie prístupu podľa IP v súbore .htaccess je metóda, ktorá vám umožňuje obmedziť prístup na váš web pre konkrétne IP adresy alebo ich skupiny. To môže byť užitočné, ak chcete zabrániť prístupu na vašu stránku alebo jej konkrétne časti pre určitých ľudí alebo nechcených robotov.
Blokovanie jednej IP adresy sa vykonáva príkazom:
Order Deny,Allow
Allow from all
Deny from 11.22.33.44
Blokovanie niekoľkých adries IP sa vykonáva podobne duplikovaním súboru "Deny z" riadok s požadovanými adresami.
Ak chcete zablokovať rozsah adries IP:
Order Deny,Allow
Allow from all
Deny from 11.11.11.11/24
Ak chcete povoliť prístup iba pre konkrétne adresy IP, pridajte kód:
Order Deny,Allow
Deny from all
Allow from 11.22.33.44
Na úplné odmietnutie prístupu použite smernicu Odoprieť zo všetkýcha pre blokovanie adries maskou zadajte Deny z 11.22.
Kde, 11.22 je IP adresa maskovať.
Blokovanie návštevníkov pomocou User-Agent
Blokovanie používateľov pomocou User-Agent v súbore .htaccess je metóda kontroly, kto môže pristupovať na váš webový server na základe informácií o prehliadači, ktorý návštevník používa. Reťazec User-Agent obsahuje údaje o prehliadači, ktorý osoba používa na interakciu s vaším serverom, a vďaka týmto informáciám môžete určitým používateľom obmedziť prístup.
Najbežnejším spôsobom blokovania pomocou User-Agent je použitie 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>
V tomto prípade:
- RewriteCond %{HTTP_USER_AGENT} sa používa na kontrolu reťazca User-Agent.
- ^Bot1, ^Bot2, ^Bot3 sú príklady reťazcov User-Agent, ktoré chceme blokovať. Modifikátory NC naznačujú, že pri porovnávaní by sa nemali rozlišovať veľké a malé písmená.
- RewriteRule ^.*$ - [F,L] sa vzťahuje na požiadavku, ak je splnená niektorá z podmienok RewriteCond. Odošle odpoveď so stavovým kódom 403 Forbidden (F) a zastaví spracovanie pravidiel (L).
Ukladanie do vyrovnávacej pamäte v htaccess
Konfigurácia ukladania do vyrovnávacej pamäte prostredníctvom súboru .htaccess pomáha zrýchliť vaše stránky tým, že sa používateľom rýchlejšie načítavajú. Funguje to takto: určité súbory, ako sú obrázky, štýly CSS a skripty JavaScript, sa po prvom načítaní uložia do vyrovnávacej pamäte prehliadača používateľa. Teraz môže prehliadač použiť tieto súbory z vyrovnávacej pamäte namiesto toho, aby ich znova načítal zo servera zakaždým, keď používateľ navštívi stránku. To znižuje čas načítania a zlepšuje výkon stránky.
Zvážte príklad:
# 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>
Na druhej strane pre zdroje, ktoré sa často aktualizujú, je potrebné zakázať ukladanie do vyrovnávacej pamäte:
# 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>
Optimalizácia výkonu stránky
mod_deflate a mod_gzip moduly v Apache pomáhajú komprimovať informácie, ktoré server odosiela do zariadení používateľov. Vďaka tomu sú súbory menšie, čo zase urýchľuje načítanie stránky. Je však dôležité si uvedomiť, že podpora a konfigurácia týchto modulov sa môže líšiť v závislosti od vášho servera.
Príklad použitia 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>
Príklad pre 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>
Rozoberali sme najčastejšie používané smernice. Môžete sa zoznámiť so všetkými možnosťami súboru v oficiálna dokumentácia.
Ako skontrolovať funkčnosť súboru .htaccess
Ak chcete skontrolovať, či váš súbor .htaccess na lokalite funguje, môžete vykonať nasledujúce kroky:
- Zámerne zmeňte súbor .htaccess s chybou. V reakcii na to by mal server oznámiť chybu. Táto metóda ukazuje, či sa operácia so súborom vo všeobecnosti používa na serveri.
- Skontrolujte funkčnosť konkrétnych zmien, ktoré ste vykonali. Napríklad vykonajte menšiu úpravu jedného z parametrov a posúďte prítomnosť zmien.
- Skontrolujte stavový kód stránky, ak zmeny súvisia s odpoveďou servera. Ako to urobiť, sme predtým opísali v článku Kódy chýb HTTP: úplný zoznam chýb servera.
- Pozrite si denníky servera. Zobrazujú všetky chyby súvisiace s prevádzkou súboru .htaccess.
- Vykonajte testovanie pomocou online služieb alebo nástrojov.
Je dôležité pochopiť, že na kontrolu funkčnosti súboru .htaccess nie je potrebné vykonať všetky kroky naraz. Stačí si zo zoznamu vybrať najvhodnejšiu metódu a použiť ju.
Záver
Konfigurácia súboru .htaccess je dôležitým krokom pri optimalizácii a ochrane vášho servera Apache. Skúmali sme, ako tento súbor pomáha spravovať presmerovania, komprimovať obsah a zaistiť bezpečnosť. Keď si osvojíte prácu s .htaccess, získate výkonný nástroj na zlepšenie výkonu a funkčnosti webových stránok.