Что такое htaccess и почему этот файл обладает таким большим значением?

На сегодняшний день Apache является наиболее распространенным среди HTTP серверов. Распространяется данное программное обеспечение абсолютно бесплатно, и поддерживает сценарии CGI, Perl, PHP и Java.

В апреле 1996 года этот сервер стал самым популярным в сети, а в августе 2007 года он стал основным сервером для 51% всех сайтов сети.

Htaccess - представляет собой файл, содержащий дополнительные конфигурации для популярнейшего сервера Apache, а также многих других подобных ему серверов.

Именно с помощью этого файла задается множество дополнительных параметров и разрешений, которые используют в своей работе веб-сервера для отдельных пользователей или даже для отдельных папок пользователей. Это могут быть такие действия как переназначение типов используемых файлов, управление допуском для отдельных пользователей и т.д.

Все эти изменения, прописанные в файле htaccess, позволяют делать все необходимое, не предоставляя пользователю доступа к главному файлу конфигурации, то есть все изменения, прописанные в этом файле, не оказывают воздействия на работу сервера в целом.

Htaccess является файлом, очень напоминающим по своим возможностям файл httpd.conf, с тем различием, что htaccess распространяет свое влияние только на каталог, в котором расположен и на каталоги дочерние ему. Использовать htaccess можно в любом каталоге пользователя.

Располагаться такой файл может в любом из каталогов, и его директивы будут распространять свое влияние на все файлы каталога, в котором он расположен, и на все файлы подкаталогов данного каталога, в том случае, если в подкаталогах данные директивы не подвергаются переопределению в файлах htaccess, принадлежащих этим подкаталогам.

Директивы, которые могут быть внесены в файл htaccess, открывают перед каждым пользователем широкий перечень возможностей в области настроек сайта, в число которых входят:

  • Директивы перенаправления простого типа;
  • Директивы перенаправления сложного типа;
  • Индексные страницы;
  • Вывод ошибок php htaccess;
  • Кодировка страницы;
  • Управление параметрами доступа;
  • Создание паролей для определенных директорий;
  • Параметры PHP.

Как создать файл htaccess?

Создание данного файла не является сложной процедурой. Создать файл htaccess, к примеру, для wordpress можно с помощью обычного текстового редактора «Блокнот», который есть в каждом компьютере, работающем под управлением операционной системы Windows.

Алгоритм создания подобного файла выглядит следующим образом:

  • Откройте «Блокнот».
  • Убедитесь, что в настройках программы (в меню формат), функция переноса слов отключена.
  • В меню файл выберете команду «создать» и создайте новый документ.
  • Далее, в том же меню выберете пункт «Сохранить как», вручную вбейте тип файла .htaccess, как показано на рисунке ниже, и сохраните файл в необходимом каталоге.
Как создать файл htaccess?

Ваш файл готов, теперь необходимо его загрузить на ваш сайт.

Существует еще один способ создания файла htaccess с помощью программ Total Commander или FileZilla.

  • Создаем в любом текстовом редакторе файл htaccess с расширением txt.
  • C помощью программы Total Commander или FileZilla находим этот файл и нажимаем правой кнопкой мыши на его имени. Из выпадающего меню выбираем команду «переименовать».
  • Переименовываем htaccess.txt в .htaccess и сохраняем внесенные изменения.
Как создать файл htaccess? - 2

Как задается кодировка в файле htaccess?

В некоторых случаях браузер не может самостоятельно определить, каким образом следует кодировать представленный документ для того, чтобы отобразить его корректно.

Чтобы решить данную проблему, используемый тип кодировки указывается в Web настройках сервера Apache и в заголовке того документа, который необходимо отобразить.

Причем для того, чтобы браузер смог отобразить файл правильно обе эти кодировки должны полностью совпадать. В заголовках русскоязычных веб-страниц наиболее часто встречаются следующие типы кодировок:

  • Windows-1251;
  • KOI8-r;
  • Cp866;
  • Windows-1252;
  • Windows-1250;
  • UTF-8.

Давайте рассмотрим, каким образом можно указать, какая кодировка необходима для сайта по умолчанию через файл под названием htaccess. Команда AddDefaultCharset задает таблицу символов или как ее принято называть кодировку, для каждой выдаваемой браузером страницы сайта на сервере.

Для того чтобы указать кодировку, в которой браузер будет отображать станицу, нужно использовать команду: «AddDefaultCharset
UTF-8
».

Во время загрузки файла на сервер существует возможность его перекодировки. Для перекодировки следует указать, что все получаемые файлы будут обладать кодировкой UTF-8. Для того чтобы передать данную кодировку всем загружаемым на сервер файлам вводим команду: «CharsetSourceEnc UTF-8».

В случае, если вам необходимо отменить перекодировку файла сервером вносим команду: «CharsetDisable on».

Что такое htaccess rewriterule?

Модуль mod_rewrite, который имеется в составе сервера Apache, представляет собой мощнейшее средство, позволяющее преобразовывать URL-адреса. С его помощью реальными становятся любые преобразования, которые могут либо выполняться, либо не выполняться в зависимости от условий и факторов их наступления.

Данный модуль представляет собой разносторонний механизм, основанный на различных правилах и командах, более научным языком его называют синтаксическим анализатором, для работы которого применяются регулярные выражения, исполняющие преобразования URL.

Но использование данного механизма заметно увеличивает загруженность сервера, поэтому не стоит злоупотреблять данным модулем.

Для того чтобы включить механизм преобразования сетевых адресов, следует прописать в директиве RewriteEngine значение on таким образом: «RewriteEngine on». А вот установка значения off отключает данный модуль.

Директива RewriteRule определят набор правил для преобразования. Она обладает следующим синтаксисом: RewriteRule (шаблон поискового запроса) (строка используемая в качестве замены) [флаги].

В качестве шаблона поискового запроса выступают регулярные выражения, которые применяются к URL. А в роли строки, используемой в качестве замены, могут указываться текст, ссылки или значения серверных переменных.

Настройка ЧПУ в файле htaccess

Для начала хотелось бы отметить, что настройка ЧПУ именно через файл htaccess обладает некоторыми преимуществами. С помощью файла htaccess можно быстро внести изменения и произвести откат, если что-то пошло не так.

Структура файла htaccess позволяет вносить изменения в любые URL, в том числе и URL с любым уровнем вложенности адресной строки.

Настройка htaccess для правильного функционирования заключается в необходимости прописать в файле htaccess«RewriteEngine On», чтобы заставить работать все прописываемые команды.

Существует несколько основных типов адресов страниц, а значит и несколько способов превращения этих адресов в ЧПУ.

1. Простые URL адреса типа: http://www.primer.ru/page.html

Чтобы подобный адрес превратить в URL вида http://www.primer.ru/page/ необходимо в имеющийся файл htaccess внести следующую команду: «RewriteRule ^page/$ page.html [L]».

А для того чтобы поисковая система не смогла заменить этот адрес на адрес со слэшем в окончании и без него немного модернизируем внесенный код:

«RewriteRule ^page$ page/ [R=301,L]
RewriteRule ^page/$ page.html [L]».

2. Адреса с GET-параметрами, которые выглядят следующим образом http://www.primer.ru/index.php?id=4&cid=16.

В данном случае кроме самого адреса команде необходимо будет получить еще и Get-параметры. В адресе, приведенном в примере, существуют id и cid параметры, которые наделены значениями 4 и16. Чтобы из данного адреса сделать адрес вида http://www.primer.ru/getparam прописываем такие команды:

«RewriteRule ^getparam$ getparam / [R=301,L]
RewriteRule ^ getparam /$ index.php?id=4&cid=16 [L]»

Если подобная конструкция в htaccess не работает из-за особенностей сервера и того как произведена настройка файла htaccess следует прописать данную команду немного иначе:

«RewriteCond %{QUERY_STRING} ^id=4&cid=16$
RewriteRule ^index.php$ http://www.primer.ru/getparam? [R=301,L]
RewriteRule ^ getparam /$ http://www.primer.ru/getparam? [R=301,L]
RewriteRule ^ getparam id=4&cid=16»

В данном случае исполнение команды будет зациклено, о чем браузер обязательно вам сообщит, и чтобы этого не произошло, следует немного преобразить строку:

«RewriteRule ^ getparam id=4&cid=16&xxx=1»

Таким образом, с помощью файла htaccess, веб-мастер может задать множество необходимых ему параметров, разрешений, настроек и при этом не предоставлять доступ пользователю к главному файлу конфигурации.