Налада .htaccess

Файл .htaccess з'яўляецца канфігурацыйным файлам Apache. Ён дазваляе вызначыць рэакцыю сервера на запыты карыстальніка, наладзіць кэшаванне і сціск, а таксама размежаваць доступ да розных раздзелах сайта,

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


Па-першае, на сайце маецца дублікат галоўнага люстэрка, сайт адкрываецца як з www, так і без яго.

Такое становішча спраў дрэнна тым, што:

  • Блытае карыстальніка адносна правільнасці назвы сайта
  • Пагаршае запамінанне назва сайта карыстальнікам
  • Перашкаджае пошукавым робатам адэкватна ўспрымаць старонка сайта (пошукавыя робаты лічаць старонкі з www і без www рознымі, а кантэнт на іх дублируемым)

Для збавення ад дубліката галоўнага люстэрка .htaccess неабходна прапісаць:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^crazysquirrel\.ru$ [NC]
RewriteRule ^(.*)$ https://crazysquirrel.ru/$1 [R=301,L]

Для налады ў якасці асноўнага люстэрка сайта назва без www

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.crazysquirrel\.ru$ [NC]
RewriteRule ^(.*)$ https://www.crazysquirrel.ru/$1 [R=301,L]

Для налады ў якасці асноўнага люстэрка назвы з www


Па-другое, на сайце маюцца дублікат галаўнога файла сайта (index.html, index.php і г. д.)

Такое становішча спраў дрэнна тым, што:

  • Пагаршае выгляд асноўны старонкі сайта (значна прыемней бачыць імя сайта без усялякіх index чым здымі)
  • Перашкаджае пошукавым робатам адэкватна ўспрымаць старонка сайта (пошукавыя робаты лічаць адрас сайта з index і без яго як розныя старонкі, а кантэнт на іх дублируемым)

Для збавення ад дублікатаў галаўнога файла сайта неабходна прапісаць у .htaccess:

RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ https://crazysquirrel.ru/$1 [R=301,L]

Па-трэцяе, дублікаты GET (параметраў, якія перадаюцца ў url пасля знака ?)

Такое становішча спраў дрэнна тым, што:

  • Пагаршае выгляд асноўны старонкі сайта (значна прыемней бачыць URL без GET параметраў чым здымі)
  • Перашкаджае пошукавым робатам адэкватна ўспрымаць старонка сайта (пошукавыя робаты лічаць адрас сайта з GET і без яго як розныя старонкі, а кантэнт на іх дублируемым)

Для збавення ад дублікатаў GET неабходна прапісаць у .htaccess:

RewriteEngine on
RewriteCond %{QUERY_STRING} !^$ [NC]
RewriteCond %{THE_REQUEST} \? [NC]
RewriteCond %{THE_REQUEST} !admin [NC]
RewriteRule ^(.*)?(.*)$ https://crazysquirrel.ru/$1? [R=301,L]

Агульнае правіла для збавення ад дублікатаў:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^crazysquirrel\.ru$ [NC]
RewriteRule ^(.*)$ https://crazysquirrel.ru/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ https://crazysquirrel.ru/$1 [R=301,L]
RewriteCond %{QUERY_STRING} !^$ [NC]
RewriteCond %{THE_REQUEST} \? [NC]
RewriteCond %{THE_REQUEST} !admin [NC]
RewriteRule ^(.*)?(.*)$ https://crazysquirrel.ru/$1? [R=301,L]

У дадзеных канфігурацыях:

  • RewriteEngine on — дырэктыва ўключэння/выключэння механізму пераўтварэнні (пішацца адна на ўвесь htaccess)
  • RewriteCond %{HTTP_HOST} !^crazysquirrel\.ru$ [NC] — вызначэнне ўмовы для прымянення пераўтварэнні толькі да назваў сайта, выдатным ад патрэбнага
  • RewriteRule ^(.*)$https://crazysquirrel.ru/$1[R=301,L] — механізм пераўтварэння які перанакіроўвае ваш карыстальніка на «правільнае імя сайта»
  • RewriteCond %{QUERY_STRING} !^$ [NC] — вызначае ўмова для прымянення пераўтварэнні толькі да адрасах у якіх ёсць GET параметры
  • RewriteCond %{THE_REQUEST} \? [NC] — вызначае ўмова пераўтварэнні толькі для адрасоў, якія маюць ?
  • RewriteCond %{THE_REQUEST} !admin [NC] — вызначае правілы для пераўтварэння адрасоў не маюць у сваім складзе дирректории або файла адміністрацыйнай панэлі сайта (калі на сайце няма CMS або для яе працы не патрабуюцца GET параметры, дадзеную радок можна не пісаць)
  • crazysquirrel.ru — назва сайта
  • admin — дырэкторыя адміністрацыйнай панэлі сайта
  • index.php — галоўны файл сайта
  • R=301 — сцяг, які ўстанаўлівае код стану http для няправільнага сайта (301 — сцяг пастаяннай змены адрасу)
  • L — сцяг, які паказвае, што дадзенае правіла апошні
  • NC — сцяг, які паказвае, што для дадзенага правілы не важны рэгістр напісання
Паглядзець і пакінуць каментары