Šiame straipsnyje išnagrinėsime pagrindinius .htaccess failo, kuris yra labai svarbus siekiant pagerinti SEO, naudojimo principus. Šis failas užtikrina tinkamą paieškos sistemų puslapių indeksavimą. Išmoksime valdyti peradresavimus, konfigūruoti saugumą ir padidinti našumą. Be to, pateiksime patarimų, kaip savarankiškai konfigūruoti šį failą.
Kodėl reikalingas .htaccess
Failas .htaccess veikia kaip savotiškas „nuotolinis valdymas“ žiniatinklio kūrėjams „Apache“ serveriuose. Ji siūlo patogius įrankius įvairiems parametrams reguliuoti ir svetainės elgsenai valdyti. Kai tiesioginė prieiga prie pagrindinių serverio konfigūracijos failų nepasiekiama (kaip dažnai būna, pavyzdžiui, virtualaus prieglobos atveju), .htaccess tampa naudingu įrankiu atlikti būtinus pakeitimus.
„Htaccess“ dažnai yra jūsų svetainės šakniniame aplanke arba tuose aplankuose, kuriems reikalinga speciali konfigūracija. Pavyzdžiui, jei naudojate „WordPress“, konfigūraciją galima atlikti naudojant „Yoast SEO“ papildinį, kurį aptarėme straipsnyje „robots.txt konfigūravimas“ . Kitais atvejais pakanka eiti į reikiamą aplanką ir redaguoti esamą .htaccess failą arba sukurti jį, jei jis dar nebuvo sukurtas.
.htaccess failo konfigūravimas
301 Peradresuoti htaccess
301 peradresavimas .htaccess faile gali būti lyginamas su nuolatiniu peradresavimu svetainėje. Jis informuoja paieškos sistemas ir naršykles, kad puslapis nuolat yra nauju adresu ir siūlo atnaujinti žymes ir indeksuoti. Toks peradresavimas paprastai naudojamas, kai puslapis perkeliamas arba ištrinamas, siekiant išsaugoti jo reitingą paieškos rezultatuose ir nukreipti lankytojus į naują vietą.
Norėdami suaktyvinti peradresavimus, turite įjungti atitinkamą komandą .htaccess faile:
RewriteEngine on
Po to galite sukonfigūruoti paprasčiausią peradresavimo formą:
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect 301 /old-page.html /new-page.html
</IfModule>
Panašus peradresavimas naudojant „RedirectPermanent “ direktyvą atrodo taip:
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
</IfModule>
Tai yra lengviausiai konfigūruojami peradresavimo metodai. Panagrinėkime konfigūraciją, kurioje naudojami kiti, sudėtingesni peradresavimo tipai su „mod_rewrite“ moduliu:
<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 peradresavimas .htaccess, nurodantis laikiną perkėlimą, sutinkamas daug rečiau. Štai tokio nustatymo pavyzdys:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^old-page.html$ /new-page.html [R=302,L]
</IfModule>
direktyva ErrorDocument
Šis nustatymas leidžia valdyti, ką vartotojas matys, kai svetainėje įvyksta HTTP klaidų. Vietoj standartinio klaidos pranešimo galite parodyti savo puslapį, kuris lankytojui bus informatyvesnis ir padės suprasti, kas atsitiko. Naudodami tiesiog vadovaukitės šia sintaksė:
ErrorDocument <error_code> <URL_page>
Pavyzdžiui,
ErrorDocument 404 /errors/not_found.html
Reiškia, kad įvykus 404 klaidai, bus atidarytas puslapis adresu /errors/not_found.html . Absoliutūs URL adresai nurodomi panašiai:
ErrorDocument 500 http://example.com/errors/server_error.html
Šiame pavyzdyje parodytas serverio_error.html puslapio, esančio adresu http://example.com/errors/, rodymas 500 klaidos atveju.
Prieigos prie svetainių katalogo uždraudimas
.htaccess faile yra komanda „Deny from all“ (Atmesti prieigą prie visų ), kuri padeda uždrausti prieigą prie tam tikrų aplankų ar failų jūsų žiniatinklio serveryje. Tai gali būti naudinga, jei norite paslėpti privačią informaciją ar svarbius failus nuo svetainės lankytojų, kad užtikrintumėte duomenų saugumą.
Norėdami išjungti sąrašą (peržiūrėti visus galimus katalogus), turite pridėti eilutę:
Options -Indexes
Prieigos prie konkretaus katalogo blokavimo pavyzdys atrodo taip:
<Directory /path_to_your_directory>
Order Deny,Allow
Deny from all
</Directory>
Taip pat galite uždrausti prieigą prie vieno failo:
<Files "file.php">
Order Deny,Allow
Deny from all
</Files>
Arba failų diapazonui pagal plėtinį:
<FilesMatch "\.(txt|log|bak)$"> # Select the desired extensions, in the example: txt, log, bak
Order Deny,Allow
Deny from all
</FilesMatch>
Prieigos blokavimas pagal IP
Prieigos blokavimas pagal IP .htaccess faile yra metodas, leidžiantis apriboti prieigą prie savo svetainės konkretiems IP adresams arba jų grupėms. Tai gali būti naudinga, jei norite užkirsti kelią tam tikriems žmonėms arba nepageidaujamiems robotams pasiekti savo svetainę ar konkrečias jos dalis.
Vieno IP adreso blokavimas atliekamas naudojant komandą:
Order Deny,Allow
Allow from all
Deny from 11.22.33.44
Kelių IP adresų blokavimas atliekamas panašiai, dubliuojant eilutę „ Deny from “ su reikiamais adresais.
Norėdami blokuoti IP adresų diapazoną:
Order Deny,Allow
Allow from all
Deny from 11.11.11.11/24
Jei norite leisti prieigą tik konkretiems IP, pridėkite kodą:
Order Deny,Allow
Deny from all
Allow from 11.22.33.44
Norint visiškai uždrausti prieigą, naudokite direktyvą „Deny from all“ , o norint blokuoti adresus pagal kaukę, nurodykite „Deny from 11.22“.
Kur 11.22 yra IP adreso kaukė.
Lankytojų blokavimas naudojant vartotojo agentą
Naudotojų blokavimas naudojant vartotojo agentą .htaccess faile yra būdas kontroliuoti, kas gali pasiekti jūsų žiniatinklio serverį, remiantis informacija apie lankytojo naudojamą naršyklę. „User-Agent“ eilutėje yra duomenų apie naršyklę, kurią asmuo naudoja sąveikaudamas su jūsų serveriu, ir šios informacijos dėka galite apriboti tam tikrų vartotojų prieigą.
Dažniausias būdas blokuoti naudojant vartotojo agentą yra naudoti „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>
Šiame pavyzdyje:
- RewriteCond %{HTTP_USER_AGENT} naudojamas vartotojo agento eilutei patikrinti.
- ^Bot1, ^Bot2, ^Bot3 yra vartotojo agento eilučių, kurias norime blokuoti, pavyzdžiai. NC modifikatoriai rodo, kad palyginimas neturėtų būti skiriamas didžiosioms ir mažosioms raidėms.
- RewriteRule ^.*$ – [F,L] taikoma užklausai, jei įvykdoma kuri nors iš RewriteCond sąlygų. Jis siunčia atsakymą su 403 uždraustos būsenos kodu (F) ir sustabdo taisyklių apdorojimą (L).
Talpyklos kaupimas naudojant htaccess
Talpyklos konfigūravimas naudojant .htaccess failą padeda pagreitinti svetainę, nes naudotojai ją įkelia greičiau. Tai veikia taip: tam tikri failai, pvz., vaizdai, CSS stiliai ir „JavaScript“ scenarijai, po pirmojo įkėlimo išsaugomi vartotojo naršyklės talpykloje. Dabar naršyklė gali naudoti šiuos failus iš talpyklos, o ne iš naujo įkelti juos iš serverio kiekvieną kartą, kai vartotojas apsilanko puslapyje. Tai sumažina įkėlimo laiką ir pagerina svetainės našumą.
Apsvarstykite pavyzdį:
# 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>
Kita vertus, ištekliams, kurie dažnai atnaujinami, būtina išjungti talpyklą:
# 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>
Svetainės našumo optimizavimas
„Apache“ moduliai „mod_deflate“ ir „mod_gzip“ padeda suspausti informaciją, kurią serveris siunčia į naudotojų įrenginius. Dėl to failai tampa mažesni, o tai savo ruožtu pagreitina puslapio įkėlimą. Tačiau svarbu atsiminti, kad šių modulių palaikymas ir konfigūracija gali skirtis priklausomai nuo jūsų serverio.
Mod_deflate modulio naudojimo pavyzdys :
<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>
„Mod_gzip“ pavyzdys :
<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>
Aptarėme dažniausiai naudojamas direktyvas. Su visomis failo galimybėmis galite susipažinti oficialioje dokumentacijoje.
Kaip patikrinti .htaccess failo funkcionalumą
Norėdami patikrinti, ar jūsų .htaccess failas veikia svetainėje, galite atlikti šiuos veiksmus:
- Tyčia pakeiskite .htaccess failą su klaida. Atsakydamas serveris turėtų pateikti klaidą. Šis metodas parodo, ar failo operacija paprastai taikoma serveryje.
- Patikrinkite konkrečių atliktų pakeitimų funkcionalumą. Pavyzdžiui, šiek tiek pakoreguokite vieną iš parametrų ir įvertinkite, ar yra pakeitimų.
- Patikrinkite puslapio būsenos kodą, jei pakeitimai susiję su serverio atsakymu. Kaip tai padaryti, mes anksčiau aprašėme straipsnyje HTTP klaidų kodai: visas serverio klaidų sąrašas.
- Žr. serverio žurnalus. Jie rodo visas klaidas, susijusias su .htaccess failo veikimu.
- Atlikite testavimą naudodami internetines paslaugas ar įrankius.
Svarbu suprasti, kad norint patikrinti .htaccess failo funkcionalumą, nereikia atlikti visų veiksmų vienu metu. Pakanka iš sąrašo pasirinkti tinkamiausią metodą ir jį naudoti.
Išvada
.htaccess failo konfigūravimas yra svarbus žingsnis optimizuojant ir apsaugant „Apache“ serverį. Ištyrėme, kaip šis failas padeda valdyti peradresavimus, suglaudinti turinį ir užtikrinti saugumą. Įvaldę darbą su .htaccess, gausite galingą įrankį svetainių našumui ir funkcionalumui pagerinti.