Создание и настройка .htaccess
Общие сведения
Файл .htaccess
— это конфигурационный файл веб-сервера Apache. В нём можно настроить перенаправления, поменять параметры PHP, установить права доступа к файлам и каталогам, задать собственные страницы ошибок и многое другое.
Директивы в этом файле будут действовать только на каталог, в котором размещен файл, и также на все подкаталоги. Внутри подкатологов можно создавать дополнительные файлы .htaccess
, тогда они переопределят предыдущие настройки.
Создание и редактирование .htaccess
Вы можете создать файл настроек .htaccess
при помощи файлового менеджера в панели управления.
- Перейдите в раздел «Файловый менеджер»
- Нажмите кнопку «Создать файл»
- Введите имя «.htaccess»
- Нажмите кнопку «Создать»
Если вы получаете ошибку «Файл или директория с таким именем уже существует», проверьте, что вы находитесь в директории нужного сайта. Если все верно, то можно использовать уже созданный файл.
Для редактирования файла нажмите по нему два раза левой кнопкой мыши. После этого откроется новая вкладка, в которой можно вносить изменения. Когда закончите редактировать, нажмите «Сохранить».
Вы также можете редактировать .htaccess во внешних редакторах, а потом загрузить на хостинг в нужный сайт.
Предупреждаем, что некоторые текстовые редакторы Windows (например, «Блокнот») добавляют в начало документов BOM-сигнатуры. Веб-серверы могут неправильно прочитать файл с такой сигнатурой, поэтому советуем использовать «Файловый менеджер» или редактор «Notepad++».
Примеры настроек
Перенаправления
Настройка редиректов описана в отдельной статье: Типовые перенаправления.
Параметры PHP
Настройка параметров PHP описана в отдельной статье: Настройка параметров PHP.
Защита сайта паролем
Сначала нужно создать файл, в котором будет храниться логин и пароль. Подключитесь по SSH и выполните команду ниже, указав нужные значения.
htpasswd -bc ~/.htpasswd логин пароль
После этого в домашнем каталоге появится файл .htpasswd
, содержащий логин и захешированный пароль. Если вам в будущем нужно будет изменить пароль, выполните команду еще раз.
Перейдите в директорию, которую нужно защитить паролем. Например, это может быть директория wp-admin
или bitrix/admin
. Создайте в ней файл .htaccess
со следующим содержимым, заменив u
и user
на первую букву вашего логина и сам логин.
AuthType Basic
AuthName "Authentication Required"
AuthUserFile /home/u/user/.htpasswd
Require valid-user
Если нужно закрыть паролем весь сайт, разместите .htaccess
в директории public_html
.
Блокировка запросов по IP
Ограничить доступ к сайту для IPv4 или IPv6 адресов можно с помощью директив Allow
, Deny
или Require
(появился после Apache 2.4). Мы рекомендуем использовать новый Require
.
Запретить доступ конкретным адресам, разрешить всем остальным:
<RequireAll>
Require not ip 1.1.1.1 # ipv4
Require not ip 1:2:3:4:5:6:7:8 # ipv6
Require all granted
</RequireAll>
Разрешить доступ конкретным адресам, запретить всем остальным:
<RequireAny>
Require ip 1.2.3.4 # ipv4
Require ip 1:2:3:4:5:6:7:8 # ipv6
Require all denied
</RequireAny>
Вместо конкретных адресов вы можете указывать подсети:
1.2.3.0/24 # ipv4
1:2:3:4:0:0::/64 # ipv6
Блокировка запросов по User-Agent
Чтобы защитить сайт от нежелательных ботов, вы можете заблокировать их по User-Agent. На каждый из них нужно будет добавить строку по примеру.
SetEnvIfNoCase User-Agent "^Bandit" bad_bot
SetEnvIfNoCase User-Agent "^Baiduspider" bad_bot
SetEnvIfNoCase User-Agent "^BatchFTP" bad_bot
SetEnvIfNoCase User-Agent "^Bigfoot" bad_bot
SetEnvIfNoCase User-Agent "^Black.Hole" bad_bot
<RequireAll>
Require not env bad_bot
Require all granted
</RequireAll>
Будьте аккуратны с блокировкой wget
или curl
, так как вы можете использовать их в своих Cron-задачах. Например, исполнитель «HTTP-запрос» использует wget
.
Индексная страница по умолчанию
Директива DirectoryIndex
позволит вам указать страницу, которая будет отдаваться по умолчанию при обращении к директории.
DirectoryIndex custom.html
Вы также можете указать несколько страниц, в этом случае сервер «пройдет» по списку слева направо и отобразит первую доступную страницу:
DirectoryIndex custom.html index.html index.php
Собственные страницы ошибок
Директивой ErrorDocument
можно указать, какую страницу возвращать в случае ошибки 403, 404, 500 и так далее.
ErrorDocument 404 /errors/404.html
Перед этим проверьте, возможно, ваша CMS поддерживает функцию создания страниц ошибок. Внутри CMS вы сможете настроить всё более гибко.
Кодировка
Пример изменения кодировки на CP1251:
AddDefaultCharset cp1251
php_value default_charset cp1251
По умолчанию на хостинге используется UTF-8.
Отображение листинга (содержимого директории)
По умолчанию, если в директории нет индексного файла, запрос на неё вернет 403 ошибку. Чтобы вместо этого вывести содержимое директории, напишите:
Options +Indexes
IndexOptions Charset=UTF-8