База ведаў Простая інструкцыя па працы з сэрвісам Профітсервер
галоўны База ведаў Налада файла .htaccess

Налада файла .htaccess


У гэтым артыкуле мы вывучым асноўныя прынцыпы выкарыстання файла .htaccess, які мае вырашальнае значэнне для паляпшэння SEO. Гэты файл забяспечвае правільную індэксацыю старонак пошукавымі сістэмамі. Мы даведаемся, як кіраваць перанакіраваннямі, наладжваць бяспеку і павышаць прадукцыйнасць. Дадаткова мы дамо парады, як наладзіць гэты файл самастойна.

Навошта патрэбен .htaccess

Файл .htaccess дзейнічае як свайго роду "дыстанцыйнае кіраванне" для вэб-распрацоўшчыкаў на серверах Apache. Ён прапануе зручныя інструменты для налады розных параметраў і кіравання паводзінамі вэб-сайта. Калі прамы доступ да асноўных файлаў канфігурацыі сервера недаступны (як гэта часта бывае, напрыклад, з віртуальным хостынгам), .htaccess становіцца карысным інструментам для ўнясення неабходных змяненняў.

Htaccess часта знаходзіцца ў каранёвай тэчцы вашага сайта або ў тых тэчках, дзе патрабуецца спецыяльная канфігурацыя. Напрыклад, калі вы карыстаецеся WordPress, канфігурацыю можна выканаць з дапамогай плагіна Yoast SEO, які мы абмяркоўвалі ў артыкуле Налада robots.txt. У астатніх выпадках дастаткова перайсці ў патрэбную тэчку і адрэдагаваць існуючы файл .htaccess або стварыць яго, калі ён яшчэ не створаны.

Налада файла .htaccess

301 Перанакіраванне htaccess

Перанакіраванне 301 у файле .htaccess можна параўнаць з пастаянным перанакіраваннем на вэб-сайце. Ён інфармуе пошукавыя сістэмы і браўзеры аб тым, што старонка пастаянна знаходзіцца па новым адрасе, і прапануе абнавіць закладкі і індэксаваць. Такое перанакіраванне звычайна выкарыстоўваецца, калі старонка перамяшчаецца або выдаляецца, каб захаваць яе рэйтынг у выніках пошуку і перанакіраваць наведвальнікаў на новае месца.

Каб актываваць перанакіраванне, трэба ўключыць адпаведную каманду ў файле .htaccess:

RewriteEngine on

Пасля гэтага вы можаце наладзіць самую простую форму перанакіравання:

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

Падобнае перанакіраванне з выкарыстаннем RedirectPermanent дырэктыва выглядае так:

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

Гэта самыя простыя для канфігурацыі метады перанакіравання. Давайце разгледзім канфігурацыю, якая выкарыстоўвае іншыя, больш дасканалыя тыпы перанакіраванняў з mod_rewrite модуль:

<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 .htaccess, якое паказвае на часовы пераезд, сустракаецца значна радзей. Вось прыклад такой налады:

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

Дырэктыва ErrorDocument

Гэты параметр дазваляе вам кантраляваць, што бачыць карыстальнік, калі на вашым сайце ўзнікаюць памылкі HTTP. Замест стандартнага паведамлення пра памылку вы можаце паказаць сваю старонку, якая будзе больш інфарматыўнай для наведвальніка і дапаможа яму зразумець, што адбылося. Проста выконвайце гэты сінтаксіс для выкарыстання:

ErrorDocument <error_code> <URL_page>

Напрыклад,

ErrorDocument 404 /errors/not_found.html

Азначае, што калі а 404 адбываецца памылка, старонка на /errors/not_found.html будзе адкрыты. Абсалютныя URL-адрасы ўказваюцца аналагічна:

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

Гэты прыклад паказвае на адлюстраванне памылка_сервера.html Старонка на http://example.com/errors/ у выпадку а 500 памылка.

Адмова ў доступе да каталога сайта

У файле .htaccess ёсць каманда Адмаўляць ад усіх, які дапамагае забараніць доступ да пэўных тэчак або файлаў на вашым вэб-серверы. Гэта можа спатрэбіцца, калі вы хочаце схаваць прыватную інфармацыю або важныя файлы ад наведвальнікаў сайта, каб забяспечыць бяспеку дадзеных.

Каб адключыць лістынг (прагляд усіх даступных каталогаў), трэба дадаць радок:

Options -Indexes

Прыклад блакавання доступу да пэўнага каталогу выглядае так:

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

Падобным чынам вы можаце забараніць доступ да аднаго файла:

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

Або для шэрагу файлаў па пашырэнню:

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

Блакаванне доступу па IP

Блакаванне доступу па IP у файле .htaccess - гэта метад, які дазваляе абмежаваць доступ да вашага сайта для пэўных IP-адрасоў або іх груп. Гэта можа быць карысна, калі вы хочаце забараніць доступ пэўным людзям або непажаданым ботам да вашага сайта або яго асобных частак.

Блакаванне аднаго IP-адраса выконваецца з дапамогай каманды:

Order Deny,Allow
Allow from all
Deny from 11.22.33.44

Блакаванне некалькіх IP-адрасоў ажыццяўляецца аналагічным чынам шляхам дублявання "Адмаўляць ад" радок з неабходнымі адрасамі.

Для блакіроўкі дыяпазону IP-адрасоў:

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

Каб дазволіць доступ толькі для пэўных IP-адрасоў, дадайце код:

Order Deny,Allow
Deny from all
Allow from 11.22.33.44

Для поўнай адмовы ў доступе выкарыстоўвайце дырэктыву Адмаўляць ад усіх, а для блакіроўкі адрасоў па масцы ўкажыце Адмова ад 11.22.

дзе, 11.22 гэта IP-адрас маска.

Блакаванне наведвальнікаў з дапамогай User-Agent

Блакіроўка карыстальнікаў з дапамогай User-Agent у файле .htaccess - гэта спосаб кантраляваць, хто можа атрымаць доступ да вашага вэб-сервера, на аснове інфармацыі аб браўзеры, які выкарыстоўвае наведвальнік. Радок User-Agent змяшчае дадзеныя аб браўзеры, які чалавек выкарыстоўвае для ўзаемадзеяння з вашым серверам, і дзякуючы гэтай інфармацыі вы можаце абмежаваць доступ для пэўных карыстальнікаў.

Найбольш распаўсюджаным спосабам блакіроўкі з дапамогай User-Agent з'яўляецца выкарыстанне 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>

У гэтым прыкладзе:

  1. RewriteCond %{HTTP_USER_AGENT} выкарыстоўваецца для праверкі радка User-Agent.
  2. ^Bot1, ^Bot2, ^Bot3 з'яўляюцца прыкладамі радкоў User-Agent, якія мы хочам заблакіраваць. Мадыфікатары NC паказваюць, што параўнанне павінна быць неадчувальным да рэгістра.
  3. RewriteRule ^.*$ - [F,L] прымяняецца да запыту, калі выконваецца любая з умоў RewriteCond. Ён адпраўляе адказ з кодам статусу 403 Forbidden (F) і спыняе апрацоўку правілаў (L).

Кэшаванне ў htaccess

Налада кэшавання праз файл .htaccess дапамагае паскорыць ваш сайт, паскараючы яго загрузку для карыстальнікаў. Гэта працуе наступным чынам: пэўныя файлы, такія як выявы, стылі CSS і скрыпты JavaScript, захоўваюцца ў кэшы браўзера карыстальніка пасля першай загрузкі. Цяпер браўзер можа выкарыстоўваць гэтыя файлы з кэша замест таго, каб перазагружаць іх з сервера кожны раз, калі карыстальнік наведвае старонку. Гэта скарачае час загрузкі і павышае прадукцыйнасць сайта.

Разгледзім прыклад:

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

Для рэсурсаў, якія часта абнаўляюцца, наадварот, неабходна адключыць кэшаванне:

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

Аптымізацыя прадукцыйнасці сайта

,en mod_deflate і mod_gzip модулі ў Apache дапамагаюць сціскаць інфармацыю, якую сервер адпраўляе на прылады карыстальнікаў. Гэта робіць файлы меншымі па памеры, што, у сваю чаргу, паскарае загрузку старонкі. Аднак важна памятаць, што падтрымка і канфігурацыя гэтых модуляў можа адрознівацца ў залежнасці ад вашага сервера.

Прыклад выкарыстання mod_deflate модуль:

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

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

Мы абмеркавалі найбольш часта выкарыстоўваюцца дырэктывы. Вы можаце азнаёміцца ​​з усімі магчымасцямі файла ў афіцыйная дакументацыя.

Як праверыць функцыянальнасць файла .htaccess

Каб праверыць, ці працуе ваш файл .htaccess на сайце, вы можаце выканаць наступныя дзеянні:

  1. Наўмысна змяніце файл .htaccess з памылкай. У адказ сервер павінен выдаць памылку. Гэты метад паказвае, ці звычайна аперацыя з файлам прымяняецца на серверы.
  2. Праверце функцыянальнасць пэўных змяненняў, якія вы зрабілі. Напрыклад, зрабіць нязначную карэкціроўку аднаго з параметраў і ацаніць наяўнасць змяненняў.
  3. Праверце код стану старонкі, калі змены звязаны з адказам сервера. Як гэта зрабіць, мы раней распавядалі ў артыкуле Коды памылак HTTP: поўны спіс памылак сервера.
  4. Звярніцеся да журналаў сервера. Яны адлюстроўваюць усе памылкі, звязаныя з працай файла .htaccess.
  5. Правядзіце тэсціраванне з дапамогай інтэрнэт-сэрвісаў або інструментаў.

Важна разумець, што для праверкі працаздольнасці файла .htaccess неабавязкова выконваць усе дзеянні адразу. Дастаткова выбраць найбольш прыдатны спосаб з спісу і выкарыстоўваць яго.

Conclusion

Налада файла .htaccess з'яўляецца важным крокам у аптымізацыі і абароне вашага сервера Apache. Мы вывучылі, як гэты файл дапамагае кіраваць перанакіраваннямі, сціскаць кантэнт і забяспечваць бяспеку. Як толькі вы асвоіце працу з .htaccess, вы атрымаеце магутны інструмент для павышэння прадукцыйнасці і функцыянальнасці вэб-сайтаў.

❮ Папярэдні артыкул Як наладзіць вэб-сервер (Apache-PHP-MySQL/MariaDB) у Linux
Наступны артыкул ❯ Настройка FTP сервера

Спытайце нас пра VPS

Мы заўсёды гатовы адказаць на вашы пытанні ў любы час дня і ночы.