Այս հոդվածում մենք կուսումնասիրենք .htaccess ֆայլի օգտագործման հիմնարար սկզբունքները, որոնք շատ կարևոր են SEO-ի բարելավման համար: Այս ֆայլը ապահովում է էջերի պատշաճ ինդեքսավորումը որոնման համակարգերի կողմից: Մենք կսովորենք, թե ինչպես կառավարել վերահղումները, կարգավորել անվտանգությունը և բարձրացնել կատարողականությունը: Բացի այդ, մենք խորհուրդներ կտանք, թե ինչպես կարգավորել այս ֆայլը ինքնուրույն:
Ինչու է անհրաժեշտ .htaccess
.htaccess ֆայլը մի տեսակ «հեռակառավարման» դեր է կատարում Apache սերվերների վրա վեբ մշակողների համար: Այն առաջարկում է հարմար գործիքներ տարբեր պարամետրերը կարգավորելու և կայքի վարքագիծը կառավարելու համար: Երբ ուղղակի մուտքը դեպի սերվերի հիմնական կազմաձևման ֆայլեր անհասանելի է (ինչպես, օրինակ, հաճախ պատահում է վիրտուալ հոսթինգի դեպքում), .htaccess-ը դառնում է օգտակար գործիք անհրաժեշտ փոփոխություններ կատարելու համար:
Htaccess-ը հաճախ գտնվում է ձեր կայքի root թղթապանակում կամ այն թղթապանակներում, որտեղ անհրաժեշտ է հատուկ կարգավորում: Օրինակ, եթե դուք օգտագործում եք WordPress, կարգավորումը կարող է իրականացվել Yoast SEO հավելվածի միջոցով, որը մենք քննարկել ենք robots.txt-ի կարգավորման մասին հոդվածում : Այլ դեպքերում, բավական է մտնել անհրաժեշտ թղթապանակ և խմբագրել առկա .htaccess ֆայլը կամ ստեղծել այն, եթե այն դեռ չի ստեղծվել:
.htaccess ֆայլի կազմաձևում
301 Վերահղում htaccess
.htaccess ֆայլում 301 վերահղումը կարելի է համեմատել վեբկայքի մշտական վերահղման հետ: Այն տեղեկացնում է որոնման համակարգերին և բրաուզերներին, որ էջն այժմ մշտապես գտնվում է նոր հասցեում և առաջարկում է թարմացնել էջանիշները և ինդեքսավորել: Նման վերահղումը սովորաբար օգտագործվում է, երբ էջը տեղափոխվում կամ ջնջվում է որոնման արդյունքներում իր վարկանիշը պահպանելու և այցելուներին նոր վայր վերահղելու համար:
Վերահղումները ակտիվացնելու համար անհրաժեշտ է միացնել համապատասխան հրամանը .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>
Հրահանգի սխալ փաստաթուղթ
Այս կարգավորումը թույլ է տալիս վերահսկել, թե ինչ է օգտատերը տեսնում, երբ ձեր կայքում տեղի են ունենում 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
Այս օրինակը ցույց է տալիս server_error.html էջի ցուցադրումը http://example.com/errors/ հասցեում ՝ 500 սխալի դեպքում ։
Կայքի տեղեկատու մուտքի մերժում
.htaccess ֆայլն ունի «Deny from all» հրամանը , որը օգնում է արգելել ձեր վեբ սերվերի որոշակի թղթապանակների կամ ֆայլերի մուտքը: Սա կարող է օգտակար լինել, եթե ցանկանում եք թաքցնել անձնական տեղեկությունները կամ կարևոր ֆայլերը կայքի այցելուներից՝ տվյալների անվտանգությունն ապահովելու համար:
Ցուցակումն անջատելու համար (դիտելու բոլոր առկա գրացուցակները), դուք պետք է ավելացնեք տողը.
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-ի միջոցով մուտքի արգելափակում
.htaccess ֆայլում IP-ի միջոցով մուտքի արգելափակումը մի մեթոդ է, որը թույլ է տալիս սահմանափակել մուտքը դեպի ձեր կայք հատուկ 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
Մուտքի լրիվ մերժման համար օգտագործեք Deny from all հրահանգը , իսկ դիմակով հասցեները արգելափակելու համար նշեք Deny from 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>
Այս օրինակում.
- RewriteCond %{HTTP_USER_AGENT} օգտագործվում է User-Agent տողը ստուգելու համար:
- ^Bot1, ^Bot2, ^Bot3-ը User-Agent տողերի օրինակներ են, որոնք ցանկանում ենք արգելափակել: NC մոդիֆիկատորները ցույց են տալիս, որ համեմատությունը պետք է լինի առանց մեծատառերի:
- RewriteRule ^.*$ - [F,L] կիրառվում է հարցումին, եթե RewriteCond պայմաններից որևէ մեկը բավարարված է: Այն ուղարկում է պատասխան 403 Արգելված կարգավիճակի կոդով (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>
Կայքի աշխատանքի օպտիմիզացում
Apache-ի mod_deflate և mod_gzip մոդուլները օգնում են սեղմել սերվերի կողմից օգտատերերի սարքերին ուղարկվող տեղեկատվությունը: Սա ֆայլերը փոքրացնում է չափսերով, ինչն էլ իր հերթին արագացնում է էջի բեռնումը: Այնուամենայնիվ, կարևոր է հիշել , որ այս մոդուլների աջակցությունը և կարգավորումը կարող են տարբեր լինել՝ կախված ձեր սերվերից:
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 ֆայլն աշխատում է կայքում, կարող եք կատարել հետևյալ քայլերը.
- Միտումնավոր փոխեք .htaccess ֆայլը սխալով: Ի պատասխան՝ սերվերը պետք է սխալ տա։ Այս մեթոդը ցույց է տալիս, թե արդյոք ֆայլի գործողությունը սովորաբար կիրառվում է սերվերի վրա:
- Ստուգեք ձեր կատարած կոնկրետ փոփոխությունների ֆունկցիոնալությունը: Օրինակ, մի փոքր ճշգրտում կատարեք պարամետրերից մեկում և գնահատեք փոփոխությունների առկայությունը:
- Ստուգեք էջի կարգավիճակի կոդը, եթե փոփոխությունները կապված են սերվերի պատասխանի հետ: Ինչպես դա անել, մենք նախկինում նկարագրել ենք հոդվածում HTTP սխալի կոդեր. սերվերի սխալների ամբողջական ցանկ.
- Տե՛ս սերվերի տեղեկամատյանները: Նրանք ցուցադրում են .htaccess ֆայլի աշխատանքի հետ կապված բոլոր սխալները:
- Անցկացրեք թեստավորում՝ օգտագործելով առցանց ծառայություններ կամ գործիքներ:
Կարևոր է հասկանալ, որ .htaccess ֆայլի ֆունկցիոնալությունը ստուգելու համար հարկավոր չէ միանգամից կատարել բոլոր քայլերը: Բավական է ցուցակից ընտրել ամենահարմար մեթոդը և օգտագործել այն։
Եզրափակում
.htaccess ֆայլի կազմաձևումը կարևոր քայլ է ձեր Apache սերվերի օպտիմալացման և պաշտպանության համար: Մենք ուսումնասիրել ենք, թե ինչպես է այս ֆայլն օգնում կառավարել վերահղումները, սեղմել բովանդակությունը և ապահովել անվտանգությունը: Երբ դուք տիրապետում եք .htaccess-ի հետ աշխատելուն, դուք ձեռք եք բերում հզոր գործիք՝ բարելավելու կայքերի աշխատանքը և ֆունկցիոնալությունը: