Nan atik sa a, nou pral eksplore prensip fondamantal yo nan sèvi ak dosye a .htaccess, ki enpòtan anpil pou amelyore SEO. Fichye sa a asire bon jan endèks paj pa motè rechèch. Nou pral aprann kijan pou jere redireksyon, konfigirasyon sekirite, ak ranfòse pèfòmans. Anplis de sa, nou pral bay konsèy sou kòman yo konfigirasyon fichye sa a poukont li.
Poukisa .htaccess bezwen
Fichye a .htaccess aji kòm yon kalite "kontwòl aleka" pou devlopè entènèt sou serveurs Apache. Li ofri zouti pratik pou ajiste divès paramèt ak jere konpòtman yon sit entènèt. Lè aksè dirèk nan dosye konfigirasyon prensipal sèvè a pa disponib (tankou se souvan ka a ak hosting vityèl, pou egzanp), .htaccess vin tounen yon zouti itil pou fè chanjman ki nesesè yo.
Htaccess souvan sitiye nan katab la rasin nan sit ou a oswa nan dosye sa yo kote yo bezwen konfigirasyon espesyal. Pou egzanp, si ou itilize WordPress, konfigirasyon ka fèt atravè Yoast SEO Plugin la, ke nou te diskite nan atik la sou Konfigirasyon robots.txt. Nan lòt ka, li ase pou ale nan katab ki nesesè a epi modifye fichye .htaccess ki deja egziste a, oswa kreye li si li poko kreye.
Konfigirasyon .htaccess File la
301 Redireksyon htaccess
Yon redireksyon 301 nan dosye a .htaccess ka konpare ak yon redireksyon pèmanan sou yon sit entènèt. Li enfòme motè rechèch yo ak navigatè yo ke paj la kounye a sitiye pou tout tan nan yon nouvo adrès epi li sijere mete ajou Bookmarks ak Indexing. Redireksyon sa yo anjeneral itilize lè yo deplase oswa efase yon paj pou konsève klasman li nan rezilta rechèch la epi redireksyon vizitè yo nan nouvo kote a.
Pou aktive redireksyon, ou bezwen aktive kòmandman ki koresponn lan nan dosye .htaccess la:
RewriteEngine on
Apre sa, ou ka configured fòm ki pi senp nan redireksyon:
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect 301 /old-page.html /new-page.html
</IfModule>
Yon redireksyon menm jan an lè l sèvi avèk la Redireksyon Pèmanan direktiv sanble sa a:
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
</IfModule>
Sa yo se metòd redireksyon ki pi fasil pou konfigirasyon. Ann konsidere yon konfigirasyon ki sèvi ak lòt kalite redireksyon ki pi avanse ak la mod_rewrite modil:
<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>
Yon redireksyon 302 .htaccess, ki endike demenajman tanporè, yo rankontre anpil mwens souvan. Men yon egzanp yon anviwònman konsa:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^old-page.html$ /new-page.html [R=302,L]
</IfModule>
Direktiv ErrorDocument
Anviwònman sa a pèmèt ou kontwole sa itilizatè a wè lè erè HTTP rive sou sit ou a. Olye de mesaj erè estanda a, ou ka montre pwòp paj ou a, ki pral pi enfòmatif pou vizitè a epi ede yo konprann sa ki te pase. Senpleman swiv sentaks sa a pou itilize:
ErrorDocument <error_code> <URL_page>
Pou egzanp,
ErrorDocument 404 /errors/not_found.html
Vle di ke lè yon 404 erè rive, paj la nan /errors/not_found.html pral louvri. URL absoli yo espesifye menm jan an:
ErrorDocument 500 http://example.com/errors/server_error.html
Egzanp sa a endike ekspozisyon an server_error.html paj nan http://example.com/errors/ nan evènman an nan yon 500 erè.
Refize Aksè nan yon Anyè Sit
Dosye .htaccess la gen kòmandman an Refize soti nan tout, ki ede refize aksè a sèten dosye oswa dosye sou sèvè entènèt ou an. Sa a ka itil si ou vle kache enfòmasyon prive oswa dosye enpòtan nan vizitè sit la pou asire sekirite done yo.
Pou enfim lis (gade tout anyè ki disponib), ou bezwen ajoute liy lan:
Options -Indexes
Yon egzanp bloke aksè nan yon anyè espesifik sanble sa a:
<Directory /path_to_your_directory>
Order Deny,Allow
Deny from all
</Directory>
Menm jan an tou, ou ka refize aksè nan yon sèl fichye:
<Files "file.php">
Order Deny,Allow
Deny from all
</Files>
Oswa pou yon seri dosye pa ekstansyon:
<FilesMatch "\.(txt|log|bak)$"> # Select the desired extensions, in the example: txt, log, bak
Order Deny,Allow
Deny from all
</FilesMatch>
Bloke Aksè pa IP
Bloke aksè pa IP nan dosye a .htaccess se yon metòd ki pèmèt ou mete restriksyon sou aksè nan sit entènèt ou a pou adrès IP espesifik oswa gwoup yo. Sa a ka itil si ou vle anpeche aksè nan sit ou a oswa pati espesifik li yo pou sèten moun oswa bots vle.
Bloke yon sèl adrès IP fè ak kòmandman an:
Order Deny,Allow
Allow from all
Deny from 11.22.33.44
Bloke plizyè adrès IP fè menm jan an nan kopi "Refize soti nan" liy ak adrès yo mande yo.
Pou bloke yon seri adrès IP:
Order Deny,Allow
Allow from all
Deny from 11.11.11.11/24
Pou pèmèt aksè sèlman pou IP espesifik, ajoute kòd la:
Order Deny,Allow
Deny from all
Allow from 11.22.33.44
Pou yon refi konplè aksè, sèvi ak direktiv la Refize soti nan tout, epi pou bloke adrès pa mask, presize Refize soti nan 11.22.
Ki kote, 11.22 se adrès IP la mask.
Bloke vizitè pa Itilizatè-Ajan
Bloke itilizatè pa Itilizatè-Ajan nan dosye a .htaccess se yon metòd pou kontwole ki moun ki ka jwenn aksè nan sèvè entènèt ou a ki baze sou enfòmasyon sou navigatè a vizitè a itilize. Fich Itilizatè-Ajan an gen done sou navigatè a yon moun itilize pou kominike avèk sèvè ou a, epi gras a enfòmasyon sa a, ou ka mete restriksyon sou aksè pou sèten itilizatè.
Fason ki pi komen pou bloke pa Itilizatè-Ajan se itilize 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>
Nan egzanp sa a:
- Yo itilize RewriteCond %{HTTP_USER_AGENT} pou tcheke kòd Ajan Itilizatè a.
- ^Bot1, ^Bot2, ^Bot3 se egzanp fisèl Ajan Itilizatè nou vle bloke. Modifikatè NC yo endike ke konparezon an ta dwe pa ka-sansib.
- RewriteRule ^.*$ - [F,L] aplike pou demann lan si nenpòt nan kondisyon RewriteCond yo satisfè. Li voye yon repons ak kòd estati 403 Entèdi (F) epi li sispann regleman pwosesis (L).
Cache nan htaccess
Konfigirasyon kachèt nan dosye a .htaccess ede akselere sit ou a lè li fè li chaje pi vit pou itilizatè yo. Li travay tankou sa a: sèten dosye, tankou imaj, estil CSS, ak script JavaScript, yo estoke nan kachèt navigatè itilizatè a apre premye chaj la. Koulye a, navigatè a ka itilize dosye sa yo nan kachèt la, olye pou yo rechaje yo nan sèvè a chak fwa itilizatè a vizite yon paj. Sa a diminye tan chaje ak amelyore pèfòmans sit la.
Konsidere yon egzanp:
# 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>
Pou resous ki mete ajou souvan, nan lòt men an, li nesesè enfim kachèt:
# 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>
Optimize pèfòmans sit
The mod_deflate ta dwe apwouve bèso tibebe w la epi mod_gzip modil nan Apache ede konprese enfòmasyon ke sèvè a voye bay aparèy itilizatè yo. Sa fè dosye yo pi piti nan gwosè, ki an vire akselere chaj paj. Sepandan, li enpòtan sonje ke sipò ak konfigirasyon modil sa yo ka varye selon sèvè w la.
Egzanp lè l sèvi avèk la mod_deflate modil:
<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>
Egzanp pou 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>
Nou te diskite sou direktiv ki pi souvan itilize yo. Ou ka familyarize tèt ou ak tout kapasite yo nan dosye a nan la dokiman ofisyèl.
Ki jan yo tcheke fonksyonalite a nan dosye a .htaccess
Pou tcheke si dosye .htaccess ou a ap travay sou sit la, ou ka fè etap sa yo:
- Fè entansyonèl chanje fichye a .htaccess ak yon erè. An repons, sèvè a ta dwe bay yon erè. Metòd sa a montre si operasyon dosye a jeneralman aplike sou sèvè a.
- Tcheke fonksyonalite chanjman espesifik ou te fè yo. Pou egzanp, fè yon ti ajisteman nan youn nan paramèt yo epi evalye prezans nan chanjman.
- Tcheke kòd estati paj la si chanjman yo gen rapò ak repons sèvè a. Ki jan fè sa, nou te deja dekri nan atik la Kòd erè HTTP: yon lis konplè erè sèvè.
- Gade nan mòso bwa sèvè yo. Yo montre tout erè ki gen rapò ak operasyon an nan dosye a .htaccess.
- Fè tès lè l sèvi avèk sèvis oswa zouti sou entènèt.
Li enpòtan pou w konprann ke pou tcheke fonksyonalite fichye a .htaccess, ou pa bezwen fè tout etap yo nan yon fwa. Li ase yo chwazi metòd ki pi apwopriye nan lis la epi sèvi ak li.
konklizyon
Konfigirasyon fichye .htaccess la se yon etap enpòtan nan optimize ak pwoteje sèvè Apache ou a. Nou te eksplore fason dosye sa a ede jere redireksyon, konprime kontni, epi asire sekirite. Yon fwa ou metrize travay ak .htaccess, ou jwenn yon zouti pwisan pou amelyore pèfòmans ak fonctionnalités nan sit entènèt.