Добавьте страницу в закладки, чтобы не искать её заново — Ctrl+D / ⌘+D.

Если инструмент пригодился — поделитесь им с коллегами.

Генераторы для сайта · Настройка Apache

Генератор .htaccess — рабочий файл без ошибки 500

Соберите файл .htaccess без ручного кода: закройте служебные файлы, поставьте пароль на раздел или доступ по IP, включите сжатие и кеширование, назначьте страницы ошибок и режим обслуживания. Директивы, которым нужен модуль сервера, обёрнуты в <IfModule> — если модуля на хостинге нет, блок просто не сработает, а не уронит сайт.

Модульные директивы в IfModule Отсутствующий модуль не уронит сайт
Доступ по IP и пароль Закрыть раздел или весь сайт
Сжатие и кеширование Готовые сроки по типам файлов
Проверка конфликтов Предупредит о рискованных сочетаниях
Сверено с первоисточниками Синтаксис Apache 2.4 Обновлено: 18 октября 2026

Домен сайта

Нужен для склейки www/https и защиты от хотлинкинга — для остальных блоков не обязателен.

Например: site.ru — без протокола и www, они добавятся автоматически там, где нужно
www и HTTPS склейка зеркал

Та же функция уже есть в Генераторе 301-редиректов. Если вы уже сгенерировали склейку www/https там — не добавляйте её здесь повторно: при склеивании двух файлов в один получится задвоенный RewriteEngine On и повторяющиеся правила. Используйте склейку в одном месте — либо здесь, либо там.

Включайте только если на сайте уже установлен и работает SSL-сертификат. Без сертификата редирект на HTTPS сделает сайт полностью недоступным.

Безопасность

Заголовки безопасности

Запрещает встраивать страницы сайта во фрейм на чужих ресурсах — защита от подмены интерфейса поверх вашего. SAMEORIGIN оставляет встраивание на своём домене, DENY запрещает везде.

Браузер запомнит требование HTTPS на выбранный срок вперёд — если сертификат вдруг станет недействителен, сайт будет недоступен у уже заходивших посетителей всё это время. Включайте только при стабильно работающем HTTPS.

Нужен заполненный домен сайта выше. Прямые заходы (пустой referrer) и переходы с вашего домена разрешены — сам себя не заблокируете.
Производительность
Страницы ошибок

Путь должен вести на реально существующий локальный файл — иначе при ошибке браузер может провалиться в ещё одну ошибку.

Канонизация URL
Режим обслуживания

Ответ автоматически отдаётся с кодом 503, а не обычным 200 — так поисковики понимают, что это временно, и не воспринимают страницу «мы скоро вернёмся» как настоящий контент вместо ваших реальных страниц.

Ограничение доступа IP и пароль

Правила действуют на ту папку, где лежит файл, и на все вложенные. Чтобы закрыть только раздел — положите отдельный .htaccess внутрь него, а не в корень сайта.

Нужен полный путь на сервере, а не адрес в браузере. Сам файл .htpasswd с логинами и паролями создаётся отдельно — в панели хостинга или командой htpasswd -c. Пароли мы не генерируем: хранить их можно только на вашей стороне.

Готовый код

Вставьте в файл .htaccess в корне сайта. Обновляется автоматически. При скачивании файл сохраняется как htaccess.txt — браузеры не отдают файлы с точкой в начале имени, поэтому на сервере его нужно переименовать в .htaccess.

Чек-лист перед публикацией

  • Сделайте резервную копию текущего .htaccess перед заменой
  • Проверьте, что файлы страниц ошибок (404, 403, 500) реально существуют по указанным путям
  • После публикации откройте сайт в браузере — если появилась ошибка 500, верните резервную копию и уберите директивы по одной
  • Проверьте работу сайта и с www, и без — на случай опечатки в домене

Код формируется локально в браузере — ничего не отправляется на сервер Neorank.

Важно: сначала сделайте резервную копию текущего .htaccess: ошибка в файле может отключить сайт. Проверьте правила на тестовом адресе.

Подробнее об инструменте

Как не превратить .htaccess в причину падения сайта

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

Зачем нужен <IfModule>

Каждая директива в .htaccess принадлежит конкретному модулю Apache — сжатие настраивает mod_deflate, заголовки безопасности — mod_headers, редиректы — mod_rewrite. Если модуль не загружен на хостинге, а директива стоит без обёртки — Apache не может её распознать и останавливает обработку всего сайта ошибкой 500.

  • <IfModule mod_headers.c>...</IfModule> — если модуля нет, блок просто пропускается
  • Сайт продолжает работать без этой конкретной функции, а не падает целиком
  • Каждая директива этого конструктора обёрнута именно так — без исключений

Почему здесь нет php_value

На хостингах с PHP как модулем Apache (mod_php) директивы php_value/php_flag работают. Но большинство современных хостингов используют PHP-FPM — отдельный процесс, который вообще не читает .htaccess. Без правильной обёртки такая директива останавливает сайт ошибкой 500.

  • Определить заранее, что именно установлено на конкретном хостинге, не может ни один генератор
  • Поэтому здесь эта категория директив сознательно не предлагается
  • Настройки PHP надёжнее менять через панель хостинга или файл php.ini, если доступ есть

Почему важно закрывать служебные файлы

Файлы вроде .env, .git/config или бэкапов базы данных .sql часто просто лежат в публичной папке сайта — если не запретить к ним прямой доступ, любой человек может открыть их по прямой ссылке и увидеть пароли от базы данных, ключи API или структуру репозитория.

Это не теоретический риск: автоматические сканеры постоянно проверяют сайты именно на наличие таких файлов по стандартным путям — закрыть доступ стоит буквально пары строк в .htaccess.

Сжатие и кеширование — не только про скорость

Gzip-сжатие уменьшает объём передаваемых HTML/CSS/JS в разы — это быстрее для посетителя и меньше нагрузки на сервер. Кеширование в браузере идёт ещё дальше: при повторном визите картинки и стили вообще не запрашиваются заново, а берутся из локального кеша браузера.

Скорость загрузки — прямой фактор ранжирования в Google и Яндексе, а для мобильного трафика (где канал часто медленнее) эффект ощущается сильнее всего.

Режим обслуживания и код 503

Частая ошибка при временном закрытии сайта — показать страницу «сайт на обслуживании», но с кодом ответа 200 (как у обычной страницы). Поисковик воспринимает это как «на этом адресе теперь другой контент» и может начать вытеснять из индекса настоящие страницы сайта заглушкой.

Код 503 явно сообщает: «сервис временно недоступен, загляните позже» — поисковик не трогает уже проиндексированные страницы и просто повторяет попытку позже.

Зачем канонизировать URL

Если сайт одновременно открывается и по /page, и по /page/, и по /page/index.html — для поисковика это три разных адреса с одинаковым содержимым. Дубли размывают ранжирование между версиями вместо того, чтобы весь вес доставался одной канонической странице.

Правила канонизации в этом блоке приводят все варианты к единому виду через постоянный редирект, а не просто прячут разницу визуально.

Основа

Что такое .htaccess, где он лежит и как работает

Файл настроек Apache, который меняет поведение сервера без доступа к его основному конфигу.

.htaccess — текстовый файл с директивами веб-сервера Apache. Он позволяет менять поведение сервера в отдельной папке, когда прав на основной конфиг нет, — именно поэтому файл стал стандартом на виртуальном хостинге. Имя начинается с точки: в Unix-системах это признак скрытого файла, поэтому в файловом менеджере хостинга его часто не видно, пока не включить показ скрытых файлов.

Правила действуют на папку, где лежит файл, и на все вложенные. Файл в корне сайта управляет всем сайтом; файл внутри /admin/ — только этим разделом. Вложенные файлы переопределяют правила родительских, поэтому неожиданное поведение часто объясняется забытым .htaccess уровнем ниже.

Основные директивы, которые собирает конструктор, и модуль Apache, от которого каждая зависит. Именно отсутствие модуля — самая частая причина ошибки 500 после правки файла.
Директива Нужен модуль Что делает
RewriteRule, RewriteCond mod_rewrite Переписывание и переадресация адресов: склейка зеркал, канонизация, режим обслуживания, защита от хотлинкинга.
Header set mod_headers Добавление HTTP-заголовков: политики безопасности, HSTS, Retry-After при обслуживании.
AddOutputFilterByType mod_deflate Сжатие текстовых ответов перед отправкой браузеру — HTML, CSS, JS, JSON, SVG.
ExpiresByType mod_expires Сроки хранения файлов в кеше браузера: картинки на месяц, стили и скрипты на неделю, HTML — без кеширования.
Require, <RequireAll> Встроен в ядро Управление доступом в Apache 2.4: запрет по IP, режим «только свои адреса», проверка авторизации.
AuthType, AuthUserFile mod_auth_basic Запрос логина и пароля при входе в раздел. Сами логины хранятся в отдельном файле .htpasswd.
ErrorDocument, Options Встроены в ядро Свои страницы ошибок и запрет листинга каталогов. Модуль не нужен, но Options требует, чтобы хостинг разрешал его переопределять.

На Nginx файл .htaccess не работает. Это механизм Apache, и никаких аналогов «положить файл в папку» у Nginx нет: его правила задаются в конфигурации виртуального хоста и требуют перезагрузки сервера. Если хостинг работает на связке Nginx + Apache, файл обычно читается — но только той частью, которая обрабатывает динамику. Проверить, что именно у вас, можно у поддержки хостинга.

Задачи

Запрет доступа, пароль на раздел и редиректы

Три самые частые причины, по которым к файлу вообще обращаются.

Запретить доступ по IP

В Apache 2.4 доступом управляет директива Require. Чтобы закрыть сайт для конкретных адресов, их перечисляют внутри блока <RequireAll> после разрешения для всех остальных — конструктор собирает это автоматически. Обратный сценарий — пустить только свои адреса — делается блоком <RequireAny>: удобно для админки или стенда, но закрывает раздел и для поисковых роботов.

Старый синтаксис Order deny,allow и Deny from остался от Apache 2.2. На современных серверах он работает только при включённом модуле совместимости, а без него даёт ошибку 500 — поэтому в готовый код мы его не добавляем. Если вам достался чужой файл с такими строками, их стоит переписать на Require.

Поставить пароль на папку

Базовая HTTP-авторизация состоит из двух частей. В .htaccess указывают тип авторизации, название окна входа и полный путь на сервере к файлу с паролями — не адрес в браузере, а путь вида /home/user/.htpasswd. Сам файл .htpasswd создаётся отдельно: в панели хостинга или командой htpasswd -c. Пароли в нём хранятся в виде хеша, а не открытым текстом.

Файл с паролями лучше держать вне папки сайта, чтобы он не открывался по прямой ссылке. Если такой возможности нет, оставьте включённой блокировку служебных файлов — она закрывает .htpasswd от чтения снаружи.

Редиректы и склейка зеркал

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

Склейка www и HTTPS есть в обоих инструментах, и это единственное пересечение. Настраивайте её в одном месте: если вставить оба файла подряд, получится задвоенный RewriteEngine On и два конкурирующих правила на один адрес.

Порядок правил в файле важен: Apache читает их сверху вниз, и первое сработавшее правило с флагом [L] останавливает обработку. Поэтому конструктор всегда ставит режим обслуживания первым, затем блокировки, затем склейку зеркал и только потом канонизацию адресов — при другом порядке закрытый на обслуживание сайт успел бы сначала отправить посетителя в редирект.

Диагностика

Файл не работает или сайт отдаёт ошибку 500

Что проверять по порядку, когда после правки .htaccess что-то пошло не так.

1

Верните резервную копию

Первым делом восстановите работу сайта, а разбираться будете потом. Если копии нет — переименуйте файл в htaccess.bak: сервер перестанет его читать, и сайт откроется.

2

Добавляйте директивы по одной

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

3

Загляните в лог ошибок

В панели хостинга есть журнал ошибок Apache. Он называет и файл, и номер строки: например Invalid command 'ExpiresActive' означает, что модуль mod_expires на сервере не подключён.

4

Проверьте, читается ли файл вообще

Впишите первой строкой заведомо неверную директиву. Если сайт отдал 500 — файл читается, и дело в правилах. Если ничего не изменилось — сервер его игнорирует, и причину нужно искать у хостинга.

Частые причины, по которым файл не срабатывает

Файл назван неправильно

Имя должно быть ровно .htaccess — с точкой в начале и без расширения. Windows и часть файловых менеджеров сохраняют его как htaccess.txt или .htaccess.txt, и сервер такой файл просто не видит.

По той же причине кнопка скачивания на этой странице отдаёт htaccess.txt: браузеры не сохраняют файлы с точкой в начале имени, переименовать нужно уже на сервере.

Хостинг запрещает переопределение

Директива AllowOverride в конфиге сервера решает, какие группы директив разрешено менять из .htaccess. Если она выставлена в None, файл читается, но игнорируется целиком.

Чаще всего так закрывают Options — тогда строка Options -Indexes даёт ошибку 500 при полном порядке в синтаксисе. Уточните у поддержки хостинга, что разрешено.

Директивы PHP дают ошибку 500

Строки php_value и php_flag работают только когда PHP подключён как модуль Apache. На PHP-FPM, который сегодня стоит почти везде, они приводят к ошибке 500.

Настройки PHP на таком хостинге задаются файлом .user.ini или в панели управления. Поэтому в этот конструктор PHP-директивы не включены — слишком высок шанс положить сайт.

Браузер помнит старый редирект

Код 301 — постоянный, и браузер кеширует его надолго. После правки правил может казаться, что ничего не изменилось, хотя на сервере уже всё верно.

Проверяйте в режиме инкогнито или очистите кеш. По этой же причине новые правила переадресации сначала лучше отдавать с кодом 302 и переключать на 301, когда убедились, что всё работает.

Синтаксис директив приведён по документации Apache HTTP Server 2.4: управление доступом через Require (модуль mod_authz_core), базовая авторизация (mod_auth_basic), <IfModule> как условный блок проверки модуля. Устаревшие директивы Order, Allow from и Deny from относятся к Apache 2.2 и на 2.4 требуют модуля совместимости mod_access_compat, поэтому в готовый код не добавляются. Ветка Apache 2.2 официальной поддержки не имеет.

Вопросы и ответы

Частые вопросы о файле .htaccess

Где найти файл, как закрыть доступ, почему возникает ошибка 500 и что делать на Nginx.

Обычно в корне сайта — рядом с index.php или index.html. Имя начинается с точки, а в Unix-системах это признак скрытого файла: в файловом менеджере хостинга и в FTP-клиенте его не видно, пока не включить показ скрытых файлов.

Файл может лежать и во вложенных папках — тогда его правила действуют только на них и переопределяют родительские. Если поведение сайта не совпадает с корневым файлом, проверьте, нет ли .htaccess уровнем ниже.

Чаще всего — директива требует модуль Apache, которого на хостинге нет. Не понимая команду, сервер останавливает обработку и отдаёт 500 на весь сайт. Именно поэтому такие директивы оборачивают в <IfModule>: при отсутствии модуля блок просто пропускается.

Вторая по частоте причина — php_value и php_flag на хостинге с PHP-FPM. Третья — запрет переопределения: если AllowOverride не разрешает группу директив, даже синтаксически верная строка даст ошибку.

Порядок действий простой: вернуть резервную копию, затем добавлять блоки по одному и смотреть журнал ошибок в панели хостинга — он называет и файл, и номер строки.

Условный блок, который проверяет, загружен ли нужный модуль Apache, прежде чем применять директивы внутри. Если модуля нет — блок тихо пропускается вместо ошибки 500 на весь сайт.

Оборачивать имеет смысл именно модульные директивы: RewriteRule, Header, AddOutputFilterByType, ExpiresByType. Встроенные в ядро — ErrorDocument, Require, Options — в обёртке не нуждаются, и конструктор их не заворачивает.

В блоке «Ограничение доступа» выберите режим и перечислите адреса по одному в строке. Можно указать одиночный адрес, подсеть в формате 192.168.1.0/24 или адрес IPv6. Конструктор соберёт правило на синтаксисе Apache 2.4 с директивой Require.

Есть и обратный режим — пустить только перечисленные адреса. Он удобен для админки и тестовых стендов, но закрывает раздел для всех остальных, включая поисковых роботов. Обязательно добавьте в список свой адрес: иначе доступ к сайту придётся возвращать через файловый менеджер хостинга.

Старые конструкции Order deny,allow и Deny from all — синтаксис Apache 2.2. На современных серверах они работают только с модулем совместимости, поэтому мы их не генерируем.

Включите «Запрашивать логин и пароль» и укажите полный путь на сервере к файлу .htpasswd — не адрес в браузере, а путь вида /home/user/.htpasswd. Сам файл с логинами создаётся отдельно: в панели хостинга или командой htpasswd -c, пароли хранятся в нём в виде хеша.

Пароли мы намеренно не генерируем: их место — только на вашей стороне. Файл .htpasswd лучше держать вне папки сайта, а если это невозможно — оставьте включённой блокировку служебных файлов, она закроет его от чтения снаружи.

Чтобы защита действовала только на раздел, положите отдельный .htaccess внутрь этой папки, а не в корень сайта.

Опция «Закрыть доступ к чувствительным файлам» закрывает типовой набор: .env, .htpasswd, composer.json, дампы баз, логи и резервные копии. Работает через <FilesMatch> с директивой Require all denied.

Отдельно закрываются служебные каталоги — .git, .svn и подобные. Это важное различие: <FilesMatch> сопоставляется только с именем файла, поэтому запись вида .git не защищает /.git/config — а именно через него утекают исходники. Для каталогов нужно правило по пути, и конструктор добавляет его отдельной строкой.

Исключение сделано для .well-known: через этот каталог проходит подтверждение домена при выпуске SSL-сертификата, и закрывать его нельзя.

Только если PHP подключён как модуль Apache. Директивы php_value и php_flag обрабатывает именно он, а на PHP-FPM — а это сегодня почти все хостинги — они вызывают ошибку 500.

На таких серверах настройки PHP задаются файлом .user.ini в корне сайта или через панель управления хостингом. Поэтому в конструкторе PHP-директив нет: слишком велика вероятность положить сайт ради настройки, которую всё равно нужно делать в другом месте.

Нет. Это механизм Apache, и прямого аналога у Nginx нет: его правила описываются в конфигурации виртуального хоста и применяются только после перезагрузки сервера. Положить файл в папку и получить эффект не выйдет.

На многих хостингах работает связка, где Nginx отдаёт статику, а динамику передаёт Apache — тогда файл читается, но только для той части запросов, которая доходит до Apache. Если правила срабатывают выборочно, скорее всего дело именно в этом: уточните схему у поддержки хостинга.

Склейка зеркал — www и HTTPS — есть прямо здесь, в блоке «www и HTTPS». Для остальных переадресаций (со старых адресов на новые, с одного домена на другой, отдельных страниц после переезда) удобнее генератор 301-редиректов: он собирает правила списком и выгружает их в формате .htaccess.

Важно не настроить склейку зеркал дважды. Если вставить код обоих инструментов подряд, получится задвоенный RewriteEngine On и два конкурирующих правила на один адрес — выберите одно место.

Если страница «мы скоро вернёмся» отдаётся с обычным кодом 200, поисковая система считает её нормальным содержимым страницы и может заменить им ваш реальный текст в индексе. Код 503 означает «сервис временно недоступен» — робот вернётся позже и ничего не переиндексирует.

Вместе с 503 конструктор добавляет заголовок Retry-After: он подсказывает роботу, через сколько имеет смысл зайти снова. Ещё одна деталь — из-под режима обслуживания выведены стили и картинки, иначе страница-заглушка показалась бы без оформления.

Универсального файла не существует, и это не отговорка: у CMS есть свой служебный блок, который движок записывает сам и может перезаписать при обновлении. У WordPress он отмечен комментариями # BEGIN WordPress и # END WordPress, у Битрикса — своими правилами для ЧПУ.

Правило простое: свои директивы добавляйте выше или ниже служебного блока, но никогда не внутрь него. Код из этого конструктора самодостаточен и с блоком CMS не конфликтует — за одним исключением: если движок уже настраивает склейку www и HTTPS, не включайте её здесь повторно.

Нет. Файл собирается локально в браузере на JavaScript: домен, IP-адреса и пути никуда не передаются и нигде не сохраняются.

Скачанный файл сохраняется как htaccess.txt — браузеры не отдают файлы с точкой в начале имени. Переименуйте его в .htaccess уже на сервере.