Общие сведения
.htaccess - конфигурационный файл Apache. С его помощью можно задавать настройки веб-сервера для определенных каталогов.
Указанные в .htaccess настройки действуют только на каталог, в котором размещен этот файл. На основной конфигурационный файл Apache это никак не влияет. Для различных подкаталогов также можно создавать различные файлы .htaccess. Файл .htaccess, расположенный в подкаталоге, имеет преимущество перед файлом, размещенным в каталоге.
В этой статье Вы можете ознакомиться с типовыми перенаправлениями.
Управление доступом к сайту
Директивы Order Allow, Deny или Require используются для управления доступом. В версиях Apache новее 2.4 рекомендуется использовать Require.
Директивы запрета доступа не работают для IPv6 (необходимо удалить АААА-запись домена).
Для разрешения доступа определенным IP (остальным запрещен):
Require ip 1.1.1.1
Require ip 2.2.2.2
IP-адреса можно указывать через пробел в одной строке, либо записывать еще одну директиву.
Для запрещения доступа определенным IP (остальным разрешен):
<RequireAll>
Require all granted
Require not ip 1.1.1.1
</RequireAll>
Запрещающие директивы находятся внутри блоков <RequireAll>.
Защита сайта или директории паролем. Базовая аутентификация.
В файле .htaccess также можно настроить базовую аутентификацию для защиты сайта или каталога.
1. Установите логин и пароль для входа. Подключитесь к серверу по SSH и выполните:
htpasswd -bc ~/.htpasswd логин пароль
В результате в корневой директории будет создан файл .htpasswd, содержащий логин и хэш-сумму пароля. Для изменения пароля можно использовать эту команду повторно.
2. Перейдите в каталог, для которого будет устанавливаться доступ по паролю. Создайте здесь файл .htaccess и добавьте в него:
AuthType Basic
AuthName "Authentication Required"
AuthUserFile /home/u/user/.htpasswd
require valid-user
u - первая буква вашего логина
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>
<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://domain1.com/errors/page500.html
Кодировка
C помощью AddDefaultCharset можно задать кодировку по умолчанию для всех страниц. Например, для кодировки utf-8:
AddDefaultCharset utf-8
Отображение листинга (содержимого директории)
При недоступности индексного файла запрашиваемой директории будет отображена ошибка 403 Forbidden. Чтобы отображалось содержимое директории, добавьте в .htaccess:
Options +Indexes
Если у Вас остались вопросы - создайте тикет в техподдержку.