• База знаний
  • /
  • Блог
  • /
  • Wiki
  • /
  • ONLINE CHAT
+380 (44) 364 05 71

FREEHOST.WIKI

htaccess – что это?

Статья также доступна на украинском (перейти к просмотру).

Файл htaccess – конфигурационный файл веб-сервера Apache уровня каталога. Он содержит набор инструкций, обуславливающих принципы работы ПО Apache в рамках текущего каталога и дочерних папках без внесения изменений в общие настройки веб-сервера.

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

Однако, одной программной логики самого сайта недостаточно для взаимодействия с ним. На серверах хранятся сразу несколько веб-приложений, и для одновременной и бесперебойной работы каждого из них требуется ПО более высокого уровня, которое берет на себя задачи по управлению сразу всеми запросами, поступающими от клиентов (обычных пользователей интернета). В качестве такого ПО выступает Apache.

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

  1. Переопределение директив (команд, обуславливающих принципы работы веб-сервера), которые хранятся в основном конфигурационном файле – httpd.conf, для локальных нужд (для определенного каталога).
  2. Настройка работы интерпретатора PHP (некоторые важные функции).
  3. Использование для ограничения доступа к некоторым каталогам.
  4. Выбор кодировки символов.
  5. Замена сложных URL на более простые и понятные (ЧПУ).
  6. Указание директив простого, сложного перенаправления при навигации по сайту и многое другое.

Содержание

Создание файла htaccess

Представляет собой обычный текстовый файл, поэтому может быть создан в простейшем текстовом редакторе (например, Блокнот в Windows). При создании учитывают некоторые правила, касающиеся особенностей наименования, кодировки и прочего:

  1. В качестве имя указывают “.htaccess” (в начале слова должен обязательно присутствовать символ «.», регистр имеет значение, поэтому строчные буквы не допускаются).
  2. При выборе типа файла указывают «Все файлы».
  3. Для удобства написания директив следует выбрать формат переноса по словам.
  4. В качестве кодировки используют ASCII.

 

При создании файла htaccess на компьютере с MacOS следует упустить точку в начале названия, чтобы файл был видимым в системе. После перемещения файла на веб-сервер его можно переименовать в соответствии с требованиями. Этот конфигурационный сайт может находиться в корневой директории самого сервера (/public_html) либо веб-приложения (/public_html/site_name.net). Настройки сделанные в файле .htaccess распространяются на каталог в котором размещен файл и все поддиректории. Загрузить файл со своего компьютера на сервер можно при помощи FTP клиента (см. Справка по работе с FTP).

Особенности синтаксиса директив

Синтаксисы кодов, используемых для конфигурирования httpd.conf и .htaccess полностью совпадают. Здесь также предусмотрена возможность комментирования с использованием символа “#”, текст после которого не рассматривается сервером как инструкция. Это удобно для пояснений и отключения некоторых директив без необходимости их полного удаления из файла.

Управление доступом при помощи htaccess

Чтобы полностью запретить веб-доступ, вводят следующие команды:

Order Deny,Allow
Deny from all

Если в качестве исключения требуется разрешить доступ для определенного IP, к указанным выше строкам добавляют команду “allow from 192.168.0.1” (где 192.168.0.1 – требуемый адрес).

Для установления запрета на доступ к некоторому файлу вводят следующие инструкции:

<Files private.html>
	Order Allow,Deny
	Deny from all
</Files>

Любая директория может быть защищена с использованием пароля:

AuthType Basic
AuthName "имя_защищенной_директории"
AuthUserFile /home/cpanel_user/.htpasswds/public_html/smth/passwd
require valid-user

Предпоследняя команда указывает на директорию, в которой хранится некоторый файл, защищенный с использованием пароля.

Все о htaccess – основные возможности

Правильная настройка файла htaccess позволяет вносить некоторые изменения в работу веб-сервера без получения административных прав. Управлять директивами основного конфигурационного файла (httpd.conf) могут только администраторы.

В процессе обработки запросов веб-сервер может генерировать коды различных ошибок. Например, если введенный URL ссылается на несуществующую страницу, Apache отправит код, который может быть непонятен рядовому пользователю. При разработке веб-приложений создают отдельные страницы с пояснениями ошибок (например, «Ошибка 404 – страницы не существует»). Чтобы организовать процесс автоматического перенаправления на данную страницу, используют следующую директиву в файле htaccess:

ErrorDocument 404 http://website.net/error/404.html

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

Чтобы задать в htaccess перенаправление на файл страницы сайта, используют директиву 301. Данная директива имеет следующий синтаксис:

Redirect 301 /some_page.html http://website.net/some_another_page.html

Если требуется выполнить перенаправление на новый домен (актуально например, если сайт был перенесен, а часть посетителей привыкли использовать старое доменное имя), вводят следующую директиву:

Redirect 301 / http://www.new_website_domain.net/

Что касается редиректа, некоторые разработчики выполняют htaccess 404 редирект, то есть перенаправление, например, на главную страницу веб-ресурса в случае получения запроса на несуществующую страницу. С точки зрения SEO данный подход считается некорректным.

Модуль mod_rewrite

Это один из наиболее часто используемых модулей Apache. Его основная задача состоит в динамической замене входящих URL с учетом правил, заданных с использованием двух директив. Например, модуль часто используют для перенаправления с одного URL на другой, использования более понятных URL (ЧПУ).

Например, довольно распространенное явление (если обратить внимание на адресную строку веб-браузера) – сложные URL, состоящие из различных символов. К примеру: http://website.net/v123/cat56/77/12 или http://website.net/index.php?cat=23&subcat=2&id=127. Примером ЧПУ является http://website.net/shop/product/apple.

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

Для включения рассматриваемого модуля в файл htaccess вводят директиву: RewriteEngine on.

Директива RewriteRule - что это?

Для установки правил перезаписи URL используют директиву RewriteRule. Она имеет следующий типовой вариант синтаксиса:

RewriteRule шаблон_URL подставляемый_URL [дополнительные_действия]

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

mod_rewrite обеспечивает возможность частичной замены.

Директива rewriteCond – что это?

Это вторая важная директива рассматриваемого модуля, позволяющая задать способ поиска совпадений: по имени хоста (%{HTTP_HOST}), по строке запроса

(%{QUERY_STRING}), по порту (%{SERVER_PORT}).

Один из наиболее распространенных случаев использования модуля – организация перенаправления с http на https:

RewriteEngine on
RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}

htaccess - кодировка страниц и управление доступом

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

AddDefaultCharset ANCII

Если необходимо установить кодировку для файлов с определенным расширением (например, html), в htaccess записывают:

AddType "application/x-httpd-php3; charset=windows-1251" .html

Рационально использовать кодировку UTF-8, поскольку она является наиболее распространенной в мире и является кодировкой по умолчанию в большинстве CMS.

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

<FilesMatch "\.(htaccess|htpasswd|html|txt|psd|log|sh)$>
Order Allow,Deny
Deny from all
</FilesMatch>

Внесение изменений в настройки PHP

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

  1. Длительность ожидания выполнения скрипта (php_value max_execution_time время_ожидания);
  2. Максимальный объем загружаемых файлов в Мб (php_value upload_max_filesize размер_файлаM).

Кроме того, можно указать отдельный файл для ведения записей об ошибках PHP с помощью директивы php_value error_log.

Выводы

Файл htaccess используется для удобства настройки параметров работы веб-сервера для каждого проекта (сайта) из множества, работающих в рамках одного физического сервера. С его помощью можно управлять правами доступа, выполнять перенаправления, улучшать читабельность URL, вносить изменения в настройки PHP и многое другое. Предпочтительный вариант для владельцев масштабных проектов, требующих внесения тонких настроек в httpd.conf, - выделенный сервер.

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

Статьи по теме:

Попробуйте наш ua хостинг совершенно бесплатно на протяжении 7 дней. Если у Вас возникнут вопросы по использованию файла .htaccess, наша техническая поддержка всегда готова оказать грамотную консультацию.

Купить веб хостинг

ДРУГИЕ СТАТЬИ ПО ТЕМЕ

Спасибо, что выбираете FREEhost.UA