Файл .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 — сцяг, які паказвае, што для дадзенага правілы не важны рэгістр напісання