Файл .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
Was this helpful?