Что такое .htaccess
Файл .htaccess является многофункциональной конфигурацией Apache-сервера, совмещающей в себе возможность простой реализации множества необходимых параметров сервера. При помощи .htaccess можно выставлять права и функции к конкретной папке и вложенному множеству каталогов. Имеет все возможности главного конфигурационного файла httpd.conf веб-сервера Apache.
К удобствам .htaccess можно отнести простоту использования – достаточно поместить данный файл в любом каталоге и все атрибуты и функционал будет действовать в рамках текущего каталога, распространяясь так же на содержимое папки. Некоторые бесплатные хостинг провайдеры запрещают использование .htaccess, но в настоящий момент это является большой редкостью. Теперь рассмотрим некоторые возможности файла .htaccess:
Обработка 404 ошибки
Один из примеров правильной обработки http-кодов. Например, стандартное перенаправление при 404 ошибке, реализованное следующим образом:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
ErrorDocument 404 /404.php
RewriteEngine On
RewriteCond %{HTTP_HOST} ^site.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
</IfModule>
При отсутствии запрошенного файла выводиться содержимое файла 404.php, который лежит в корне сайта. Его содержимое:
<?php
header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
echo '<meta http-equiv="refresh" content="0;URL=/">';
exit();
?>
Выводим в HTTP-заголовок корректное сообщение 404 Not Found, которое говорит поисковой системе об отсутствующем документе, а далее выводим главную страницу сайта. Человек, попытавшийся запросить несуществующий адрес, будет автоматически переходить на главную страницу сайта, вместо того чтобы смотреть на сообщение об отсутствующем документе. Разные веб-мастера предпочитывают разные подходы. Кто-то пытается зацепить внимание посетителя интересной страницей 404 ошибки, кто-то делает редирект на главную, как это сделали мы, а кто-то вообще не заботиться о данном вопросе, в результате чего 404 ошибка обрабатывается некорректно и пользователь видит сообщение от веб-сервера Apache.
Выбор главного зеркала сайта
Теперь разберём классический 301 редирект – склейка www домена с доменом без www. Выделенные строчки делают 301-редирект сайта «www.site.ru» на адрес «http://site.ru».
<IfModule mod_rewrite.c>
Options +FollowSymLinks
ErrorDocument 404 /404.php
RewriteEngine On
RewriteCond %{HTTP_HOST} ^site.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
</IfModule>
Данное содержимое сохраняется в файле .htaccess при помощи любого текстого редактора, вроде Notepadd++ и располагается в корне сайта. Поисковая система учитывает 301 редирект при выборе главного зеркала сайта и отдаёт файлу .htaccess наибольший приоритет.