Все что вы хотели знать про .htaccess но боялись спросить
.htaccess - это маленький файл, который обычно размещается в корне сайте и содержит набор определенных правил для сервера.
Само собой Википедия даст более исчерпывающий ответ:
Цитата:
.htaccess (от. англ. hypertext access) — файл дополнительной конфигурации веб-сервера Apache, а также подобных ему серверов. Позволяет задавать большое количество дополнительных параметров и разрешений для работы веб-сервера в отдельных каталогах (папках), таких как управляемый доступ к каталогам, переназначение типов файлов и т.д., без изменения главного конфигурационного файла.
.htaccess является подобием httpd.conf с той разницей, что действует только на каталог, в котором располагается, и на его дочерние каталоги. Возможность использования .htaccess в том или ином каталоге указывается в httpd.conf (директива AllowOverride).
Файл .htaccess может быть размещён в любом каталоге. Директивы этого файла действуют на все файлы в текущем каталоге и во всех его подкаталогах (если эти директивы не переопределены директивами нижележащих файлов .htaccess). Для того чтобы эти файлы .htaccess можно было использовать, необходимы соответствующие настройки главного конфигурационного файла (значение директивы AllowOverride должно быть установлено All). Как правило, подавляющее большинство хостеров разрешают использовать свои файлы .htaccess.
Но не в этом суть.
Чаще всего именно файл используется для использования так называемых ЧПУ(человеко-понятных урлов), например вместо техничного /index.php?pageID=mainhome&category=main мы получаем более понятный, наглядный адрес /home/ Такой адрес легче запомнить, написать в адресной строке и передать другим людям на словах, а не в виде ссылки.
За Урл преобразования отвечает модуль mod_rewrite, который для начала необходимо объявить в файле .htaccess и конечно же включить, с помощью инструкции
RewriteEngine On
Далее начинаем действовать в зависимости от ситуации
Например нам необходимо что все html располагающиеся в корне сайта, открывались в адресной строке в виде файлов, то мы делаем такую инструкцию:
RewriteRule ^(.+)/$ $1.html
Если на сайте ранее использовался другой метод отображения урлов, не лишним будет и переадресация пользователей со старых адресов на новые. В нашем случае, код будет такой:
RewriteRule ^$1.html$ /(.+)/ [R=301]
Тут стоит упомянуть про некоторые отдельные правила .htaccess файла, правило которое находиться выше в файле, действует раньше чем то, которое находиться ниже. По этому именно эту инструкцию следует разместить ближе к верху сайта. Теперь про квадратные скобки после правила, они называются флагами:
Цитата:
'redirect|R [=code]' (вызывает редирект)
'forbidden|F' (делает URL запрещенным)
'gone|G' (делает URL «мёртвым»)
'proxy|P' (вызвает прокси)
'last|L' (последнее правило)
'next|N' (следуюший раунд)
'chain|C' (связь со следующим правилом)
'type|T=MIME-тип' (принудительно установить MIME тип)
'nosubreq|NS' (используется только в случае невнутреннего подзапроса)
'nocase|NC' (не учитывать регистр)
'qsappend|QSA' (добавлять строку запроса)
'noescape|NE' (не экранировать URI при выводе)
skip|S=количество' (пропустить следующее правило(а))
'env|E=VAR:VAL' (установить переменную окуржения)