Создание и настройка .htaccess
Общие сведения
.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 |
Если у Вас остались вопросы - создайте тикет в техподдержку.