Файл .htaccess

Общие сведения

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

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

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

Создание и редактирование .htaccess

Создать файл настроек .htaccess вы можете при помощи файлового менеджера панели управления аккаунтом.

1. Перейдите в раздел "Файловый менеджер" панели управления.

2. Выберите пункт меню "Новый файл".

3. Создайте текстовый файл и переименуйте в ".htaccess"

Возникновение ошибки "Имя уже используется" означает, что данный файл уже создан в текущей директории.

Для редактирования файла в файловом менеджере перейдите в директорию с данным файлом, выделите его кликом левой кнопки мыши и выберите пункт меню "Редактировать".

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

Вы также можете редактировать .htaccess во внешних редакторах, но обратите внимание, что текстовые редакторы Windows (например, "Блокнот") при сохранении любых документов с кодировкой UTF-8 добавляют в них метки порядков байтов юникода - BOM-сигнатуры. Файлы с такой сигнатурой некорректно обрабатываются веб-сервером, поэтому мы рекомендуем редактировать .htaccess напрямую в "Файловом менеджере" или через специальный редактор "Notepad++".

Наверх

Примеры настроек

Управление доступом к сайту

Разрешить или ограничить доступ к сайту для определенных IPv4-адресов можно с помощью директив Order Allow,Deny или Require. В новых версиях Apache, начиная с 2.4, которая используется на наших хостинговых серверах, рекомендуется использовать именно Require.

Обратите внимание, что в рамках нашей архитектуры директивы запрета доступа не будут работать для IPv6. Для запрета доступа с IPv6-адресов необходимо удалить АААА-запись домена.

Разрешить доступ конкретным IP (для остальных доступ запрещен):

Require ip 1.1.1.1Require ip 2.2.2.2

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

Запретить доступ конкретным IP (для остальных доступ разрешен). Для работы запрещающих директивы, их необходимо заключать в блоки <RequireAll>:

<RequireAll>Require all grantedRequire not ip 1.1.1.1</RequireAll>

При использовании Allow,Deny:

Разрешить доступ всем, кроме конкретного IP:

Order Allow,DenyAllow from allDeny from 1.1.1.1

Запретить доступ всем, кроме конкретного IP:

Order Deny,AllowDeny from allAllow from 1.1.1.1

Запретить доступ для всех:

Deny from all

Аналогичным образом можно настроить доступ к конкретным файлам, включив эти директивы в блоки <Files>, например:

<Files myfile.html>Require all deniedRequire ip 1.1.1.1</Files> <Files myfile.html>Order Deny,AllowDeny from allAllow from 1.1.1.1</Files>

Наверх

Блокировка запросов по User-Agent

Можно ограничить доступ к сайту для определенных User-Agent. Например, при нежелательной активности ботов MJ12bot и SolomonoBot, используйте:

RewriteCond %{HTTP_USER_AGENT} (SolomonoBot|MJ12Bot)RewriteRule ^.*$ - [R=404,L]

Наверх

Ограничения по видам запросов

Для применения ограничений для определенных методов запросов можно использовать блоки <Limit>:

SetEnvIfNoCase User-Agent SolomonoBot bad_botSetEnvIfNoCase User-Agent MJ12Bot bad_bot <Limit GET POST HEAD> Order Allow,Deny Allow from all Deny from env=bad_bot</Limit>

Для новых версий Apache, начиная с 2.4, оптимально использовать директивы Require и заключать их в блоки <RequireAll>:

SetEnvIfNoCase User-Agent SolomonoBot bad_botSetEnvIfNoCase User-Agent MJ12Bot bad_bot <Limit GET POST HEAD> <RequireAll> Require all granted Require not env bad_bot </RequireAll></Limit>

Наверх

Индексная страница по умолчанию

Директива DirectoryIndex позволит вам указать страницу, которая будет отдаваться по умолчанию при обращении к директории, например:

DirectoryIndex new_index.html

Вы также можете указать несколько страниц, в этом случае сервер "пройдет" по списку слева направо и отобразит первую доступную страницу:

DirectoryIndex new_index.html index.html index.php

Наверх

Собственные страницы ошибок

С помощью директивы ErrorDocument вы можете сообщить веб-серверу, какая страница должна отдаваться клиенту в случае возникновения определенной ошибки (403, 404, 500 и др.). Для этого необходимо указать номер ошибки и адрес нужной страницы:

ErrorDocument 500 http://domain.ru/errors/page500.html

Вы можете хранить файлы этих страниц как в корне сайта, так и в специально созданной папке, например, errors.

Наверх

Кодировка

Указать кодировку по умолчанию (например, cp1251, utf-8, koi8-r) для всех выдаваемых страниц можно с помощью AddDefaultCharset, например:

AddDefaultCharset cp1251

При использовании PHP версии 5.6 и выше может потребоваться дополнительно указать:

php_value default_charset cp1251

Наверх

Отображение листинга (содержимого директории)

Если индексный файл запрашиваемой клиентом директории недоступен, будет выведена ошибка "403 Forbidden". Если вместо этого необходимо отображение содержимого директории, потребуется добавить в .htaccess директиву:

Options +Indexes

Last updated