Создание и настройка .htaccess
Общие сведения
.htaccess
— это конфигурационный файл веб-сервера Apache, который позволяет задавать различные настройки для работы веб-сервера, применяемые для конкретных каталогов пользователя.
Параметры, указанные в .htaccess
, не затрагивают настройки главного конфигурационного файла Apache и имеют силу только для каталога, в котором этот файл размещен, и его подкаталогов. Для подкаталогов также можно создавать дополнительные .htaccess
-файлы; при этом необходимо учитывать, что настройки .htaccess
, заданные в подкаталоге, переопределят настройки, назначенные для него в файле .htaccess
, размещенном на уровне выше.
Настройки в .htaccess
задаются различными директивами, которые далее обрабатываются и выполняются веб-сервером. С помощью .htaccess
можно настраивать перенаправления, управлять опциями PHP, устанавливать разрешения и права доступа к файлам, задавать собственные страницы ошибок и выполнять множество других действий.
Создание и редактирование .htaccess
Вы можете создать файл настроек .htaccess при помощи файлового менеджера в панели управления.
- Перейдите в раздел «Файловый менеджер».
- Нажмите кнопку «Создать файл».
- Введите имя «.htaccess».
- Нажмите кнопку «Создать».
Если вы получаете ошибку «Файл или директория с таким именем уже существует», проверьте, что вы находитесь в директории нужного сайта. Если все верно, то можно использовать уже созданный файл.
Для редактирования файла нажмите по нему два раза левой кнопкой мыши. После этого откроется новая вкладка, в которой можно вносить изменения. Когда закончите редактировать, нажмите «Сохранить».
Вы также можете редактировать .htaccess во внешних редакторах, а потом загрузить на хостинг в нужный сайт. Но предупреждаем, что некоторые текстовые редакторы Windows (например, «Блокнот») добавляют в начало документов BOM-сигнатуры. Веб-серверы могут неправильно прочитать файл с такой сигнатурой, поэтому советуем использовать «Файловый менеджер» или редактор «Notepad++».
Примеры настроек
Перенаправления
Настройка редиректов описана в отдельной статье: Типовые перенаправления.
Параметры PHP
Настройка опций PHP через .htaccess описана в отдельной статье: Настройка параметров PHP.
Управление доступом к сайту
Разрешить или ограничить доступ к сайту для определенных IPv4-адресов можно с помощью директив Order Allow,Deny
или Require
. В новых версиях Apache, начиная с 2.4, которая используется на наших хостинговых серверах, рекомендуется использовать именно Require
.
Разрешить доступ конкретным IP (для остальных доступ запрещен):
Require ip 1.1.1.1
Require ip 2.2.2.2
Несколько IP-адресов могут указываться через пробел или отдельными директивами, каждая в новой строке.
Запретить доступ конкретным IP (для остальных доступ разрешен). Для работы запрещающих директивы, их необходимо заключать в блоки <RequireAll>
:
<RequireAll>
Require all granted
Require not ip 1.1.1.1
</RequireAll>
При использовании Allow,Deny
:
Разрешить доступ всем, кроме конкретного IP:
Order Allow,Deny
Allow from all
Deny from 1.1.1.1
Запретить доступ всем, кроме конкретного IP:
Order Deny,Allow
Deny from all
Allow from 1.1.1.1
Запретить доступ для всех:
Deny from all
Аналогичным образом можно настроить доступ к конкретным файлам, включив эти директивы в блоки <Files>
, например:
<Files myfile.html>
Require all denied
Require ip 1.1.1.1
</Files>
<Files myfile.html>
Order Deny,Allow
Deny from all
Allow from 1.1.1.1
</Files>
Защита сайта или директории паролем. Базовая аутентификация
Если требуется защитить сайт или конкретную папку сайта паролем, можно воспользоваться базовой аутентификацией, которая работает на уровне веб-сервера Apache и настраивается также с помощью файла .htaccess
.
- В первую очередь задайте логин и пароль, которые будут использоваться для входа. Для этого подключитесь к аккаунту по SSH и выполните команду ниже, указав нужные вам значения:
htpasswd -bc ~/.htpasswd логин пароль
- После выполнения команды в корневом каталоге вашего аккаунта будет создан файл
.htpasswd
, содержащий логин и хэш-сумму пароля. Если в дальнейшем вам потребуется изменить указанный пароль, снова используйте команду выше. - Перейдите в директорию, которую необходимо защитить паролем (например, это может быть директория
wp-admin
), и создайте в ней файл.htaccess
со следующим содержимым, указав вместо u и user первую букву вашего логина и сам логин:
AuthType Basic
AuthName "Authentication Required"
AuthUserFile /home/u/user/.htpasswd
require valid-user
Если речь идет о защите всего сайта в целом, эту конструкцию необходимо вставить в общий .htaccess
-файл, размещенный в директории public_html
вашего сайта.
Блокировка запросов по User-Agent
Можно ограничить доступ к сайту для определенных User-Agent. Например, при нежелательной активности ботов MJ12bot и SolomonoBot, используйте:
RewriteCond %{HTTP_USER_AGENT} (SolomonoBot|MJ12Bot)
RewriteRule ^.*$ - [R=404,L]
Ограничения по видам запросов
Для применения ограничений для определенных методов запросов можно использовать блоки <Limit>
:
SetEnvIfNoCase User-Agent SolomonoBot bad_bot
SetEnvIfNoCase 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_bot
SetEnvIfNoCase 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