> For the complete documentation index, see [llms.txt](https://elecktro1337.gitbook.io/dshost/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://elecktro1337.gitbook.io/dshost/vhost/rabota-s-saitom/fail-.htaccess.md).

# Файл .htaccess

## [Создание и настройка .htaccess](https://timeweb.com/ru/help/pages/viewpage.action?pageId=4358258)

* [Общие сведения](https://faq.devsoft.club/vhost/fail-.htaccess#id-Созданиеинастройка.htaccess-Общиесведения)
* [Создание и редактирование .htaccess](https://faq.devsoft.club/vhost/fail-.htaccess#id-Созданиеинастройка.htaccess-Созданиеиредактирование.htaccess)
* [Примеры настроек](https://faq.devsoft.club/vhost/fail-.htaccess#id-Созданиеинастройка.htaccess-Примерынастроек)
  * [Перенаправления](https://faq.devsoft.club/vhost/fail-.htaccess#id-Созданиеинастройка.htaccess-Перенаправления)
  * [Параметры PHP](https://faq.devsoft.club/vhost/fail-.htaccess#id-Созданиеинастройка.htaccess-ПараметрыPHP)
  * [Управление доступом к сайту](https://faq.devsoft.club/vhost/fail-.htaccess#id-Созданиеинастройка.htaccess-Управлениедоступомксайту)
  * [Блокировка запросов по User-Agent](https://faq.devsoft.club/vhost/fail-.htaccess#id-Созданиеинастройка.htaccess-БлокировказапросовпоUser-Agent)
  * [Ограничения по видам запросов](https://faq.devsoft.club/vhost/fail-.htaccess#id-Созданиеинастройка.htaccess-Ограниченияповидамзапросов)
  * [Индексная страница по умолчанию](https://faq.devsoft.club/vhost/fail-.htaccess#id-Созданиеинастройка.htaccess-Индекснаястраницапоумолчанию)
  * [Собственные страницы ошибок](https://faq.devsoft.club/vhost/fail-.htaccess#id-Созданиеинастройка.htaccess-Собственныестраницыошибок)
  * [Кодировка](https://faq.devsoft.club/vhost/fail-.htaccess#id-Созданиеинастройка.htaccess-Кодировка)
  * [Отображение листинга (содержимого директории)](https://faq.devsoft.club/vhost/fail-.htaccess#id-Созданиеинастройка.htaccess-Отображениелистинга\(содержимогодиректории\))

### Общие сведения <a href="#id-sozdanieinastroika.htaccess-obshiesvedeniya" id="id-sozdanieinastroika.htaccess-obshiesvedeniya"></a>

.htaccess - это конфигурационный файл веб-сервера Apache, который позволяет задавать различные настройки для работы веб-сервера, применяемые для конкретных каталогов пользователя.

Параметры, указанные в .htaccess, не затрагивают настройки главного конфигурационного файла Apache и имеют силу только для каталога, в котором этот файл размещен, и его подкаталогов. Для подкаталогов также можно создавать дополнительные .htaccess-файлы; при этом необходимо учитывать, что настройки .htaccess, заданные в подкаталоге, переопределят настройки, назначенные для него в файле .htaccess, размещенном на уровне выше.

Настройки в .htaccess задаются различными директивами, которые далее обрабатываются и выполняются веб-сервером. С помощью .htaccess можно настраивать [***перенаправления***](https://faq.devsoft.club/vhost/fail-.htaccess/tipovye-perenapravleniya), управлять опциями PHP, устанавливать разрешения и права доступа к файлам, задавать собственные страницы ошибок и выполнять множество других действий.

### Создание и редактирование .htaccess <a href="#id-sozdanieinastroika.htaccess-sozdanieiredaktirovanie.htaccess" id="id-sozdanieinastroika.htaccess-sozdanieiredaktirovanie.htaccess"></a>

Создать файл настроек .htaccess вы можете при помощи файлового менеджера панели управления аккаунтом.

1\. Перейдите в раздел "[Файловый менеджер](https://panel.devsoft.club/index.php?do=filemanager)" панели управления.

2\. Выберите пункт меню "Новый файл".

3\. Создайте текстовый файл и переименуйте в ".htaccess"

Возникновение ошибки "Имя уже используется" означает, что данный файл уже создан в текущей директории.

Для редактирования файла в файловом менеджере перейдите в директорию с данным файлом, выделите его кликом левой кнопки мыши и выберите пункт меню "Редактировать".

В открывшейся форме редактирования можно внести необходимые изменения в файл конфигурации: добавить или удалить директивы. Также можно закомментировать неиспользуемые настройки, для этого необходимо добавить в начале строки символ #. Настройки, указанные в таких строках, учитываться не будут.

Вы также можете редактировать .htaccess во внешних редакторах, но обратите внимание, что текстовые редакторы Windows (например, "Блокнот") при сохранении любых документов с кодировкой UTF-8 добавляют в них метки порядков байтов юникода - BOM-сигнатуры. Файлы с такой сигнатурой некорректно обрабатываются веб-сервером, поэтому мы рекомендуем редактировать .htaccess напрямую в "Файловом менеджере" или через специальный редактор "Notepad++".

[Наверх](https://faq.devsoft.club/vhost/fail-.htaccess#sozdanie-i-nastroika-htaccess)

### Примеры настроек <a href="#id-sozdanieinastroika.htaccess-primerynastroek" id="id-sozdanieinastroika.htaccess-primerynastroek"></a>

## Управление доступом к сайту

Разрешить или ограничить доступ к сайту для определенных 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>` |
| ---------------------------------------------------------------------------------------------------------------------------------------------- |

[Наверх](https://faq.devsoft.club/vhost/fail-.htaccess#sozdanie-i-nastroika-htaccess)

## Блокировка запросов по User-Agent

\
Можно ограничить доступ к сайту для определенных User-Agent. Например, при нежелательной активности ботов MJ12bot и SolomonoBot, используйте:

| `RewriteCond %{HTTP_USER_AGENT} (SolomonoBot\|MJ12Bot)RewriteRule ^.*$ - [R=404,L]` |
| ----------------------------------------------------------------------------------- |

[Наверх](https://faq.devsoft.club/vhost/fail-.htaccess#sozdanie-i-nastroika-htaccess)

## Ограничения по видам запросов

Для применения ограничений для определенных методов запросов можно использовать блоки \<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>` |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

[Наверх](https://faq.devsoft.club/vhost/fail-.htaccess#sozdanie-i-nastroika-htaccess)

## Индексная страница по умолчанию

Директива DirectoryIndex позволит вам указать страницу, которая будет отдаваться по умолчанию при обращении к директории, например:

| `DirectoryIndex new_index.html` |
| ------------------------------- |

Вы также можете указать несколько страниц, в этом случае сервер "пройдет" по списку слева направо и отобразит первую доступную страницу:

| `DirectoryIndex new_index.html index.html index.php` |
| ---------------------------------------------------- |

[Наверх](https://faq.devsoft.club/vhost/fail-.htaccess#sozdanie-i-nastroika-htaccess)

## Собственные страницы ошибок

С помощью директивы ErrorDocument вы можете сообщить веб-серверу, какая страница должна отдаваться клиенту в случае возникновения определенной ошибки (403, 404, 500 и др.). Для этого необходимо указать номер ошибки и адрес нужной страницы:

| `ErrorDocument 500` `http://domain.ru/errors/page500.html` |
| ---------------------------------------------------------- |

Вы можете хранить файлы этих страниц как в корне сайта, так и в специально созданной папке, например, errors.

[Наверх](https://faq.devsoft.club/vhost/fail-.htaccess#sozdanie-i-nastroika-htaccess)

## Кодировка

Указать кодировку по умолчанию (например, cp1251, utf-8, koi8-r) для всех выдаваемых страниц можно с помощью AddDefaultCharset, например:

| `AddDefaultCharset cp1251` |
| -------------------------- |

При использовании PHP версии 5.6 и выше может потребоваться дополнительно указать:

| `php_value default_charset cp1251` |
| ---------------------------------- |

[Наверх](https://faq.devsoft.club/vhost/fail-.htaccess#sozdanie-i-nastroika-htaccess)

## Отображение листинга (содержимого директории)

Если индексный файл запрашиваемой клиентом директории недоступен, будет выведена ошибка "403 Forbidden". Если вместо этого необходимо отображение содержимого директории, потребуется добавить в .htaccess директиву:

| `Options +Indexes`                                                                    |
| ------------------------------------------------------------------------------------- |
| [Навер](https://faq.devsoft.club/vhost/fail-.htaccess#sozdanie-i-nastroika-htaccess)х |
