Что такое .htaccess и зачем он бизнесу
Файл .htaccess — небольшой текстовый файл в корне сайта на Apache. Сервер читает его при каждом запросе, поэтому правила действуют сразу, без перезапуска. На виртуальном хостинге это нередко единственный доступный способ управлять адресами. Если же сайт стоит на чистом nginx, файл просто игнорируется, так что сначала уточните у хостинга, какой сервер у вас используется.
Зачем это владельцу бизнеса. Вы переделали каталог, переименовали раздел или сменили домен, а старые ссылки живут в Instagram, закреплённых постах Telegram-канала, объявлениях на OLX, прайс-листах и на сайтах партнёров. Без редиректа клиент попадает на страницу 404, а поисковик теряет накопленный вес старого адреса. Правильный редирект 301 передаёт и людей, и ссылочный вес на новую страницу.
Подготовка перед правкой
Файл общий: WordPress, Битрикс и плагины тоже пишут в него свои правила. Одна опечатка обычно приводит к ошибке 500 на всём сайте, поэтому действуйте по порядку.
- Скачайте копию текущего файла, чтобы вернуть его за минуту.
- Убедитесь, что сервер — Apache и включён модуль mod_rewrite.
- Включите показ скрытых файлов в файловом менеджере или FTP-клиенте: имя начинается с точки.
- Редактируйте простым текстовым редактором, не Word.
- Добавляйте правила по одному и проверяйте сайт после каждого.
Редирект одной страницы и целого раздела
Для отдельных адресов хватает директивы Redirect. Слева путь от корня сайта, справа полный новый адрес: Redirect 301 /katalog/divan-lux/ https://example.uz/mebel/divan-lux/
Если переименовали папку, а внутренние адреса остались прежними, удобнее одно правило на весь раздел: RewriteEngine On RewriteRule ^akcii/(.*)$ /promo/$1 [R=301,L] Всё, что было в /akcii/, окажется в /promo/ с тем же окончанием. Флаг R=301 задаёт постоянный редирект, а L останавливает обработку остальных правил для этого запроса. Если написать просто R, сервер отдаст временный 302, и поисковик не поймёт, что страница переехала насовсем.
Один адрес сайта: https и версия без www
Сайт часто открывается сразу по четырём адресам: с http и https, с www и без. Для поисковика это разные страницы с одинаковым содержимым. Чтобы собрать всё в один адрес, используют связку условий: RewriteEngine On RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} ^www\. [NC] RewriteRule ^(.*)$ https://example.uz/$1 [R=301,L] Читается так: если соединение не защищённое или адрес начинается с www, отправить на основной домен по https.
Есть оговорка. Когда сайт стоит за прокси или сервисом вроде Cloudflare, Apache может не видеть, что соединение защищённое, и правило зациклится: браузер покажет ошибку «слишком много перенаправлений». В таком случае проверьте условие по заголовку, который передаёт прокси, или включите перенаправление на https в панели хостинга.
Порядок правил и типичные ошибки
Apache читает правила сверху вниз. Конкретные страницы ставьте выше разделов, а общие правила про https и зеркало — в конце. Свои редиректы размещайте до блока CMS: внутри блока между BEGIN WordPress и END WordPress плагины могут перезаписать файл, и ваши строки пропадут. Смешивать Redirect и RewriteRule без необходимости тоже не стоит: они относятся к разным модулям и выполняются на разных этапах, поэтому результат бывает неожиданным.
Что чаще всего идёт не так:
- Нет строки RewriteEngine On перед RewriteRule.
- Указан флаг R без кода, и вместо 301 получается 302.
- Правила цепляются друг за друга: старый адрес ведёт на промежуточный, тот — на конечный.
- Новый адрес подходит под шаблон старого, и возникает бесконечный цикл.
- Все удалённые страницы отправлены на главную: поисковики такое часто считают мягкой ошибкой 404.
- Сотни отдельных строк Redirect замедляют обработку каждого запроса.
Как проверить результат и когда htaccess не подходит
После каждого изменения откройте сайт в режиме инкогнито: браузер кэширует постоянные редиректы, и неудачный 301 может «застрять» даже после исправления. Проверьте старый адрес, новый и пару страниц, которых правило касаться не должно. Код ответа и цепочку переходов видно в инструментах разработчика, через curl или в онлайн-сервисе проверки заголовков. Если появилась ошибка 500 — верните сохранённую копию и перечитайте последнюю добавленную строку.
Когда адресов очень много, например при переезде интернет-магазина с тысячами товаров, лучше вынести таблицу редиректов в плагин CMS или в конфигурацию сервера. При смене домена старый хостинг стоит оплачивать, пока поисковики не склеят сайты, а люди ещё приходят по сохранённым ссылкам.
Редиректы — лишь часть технической SEO-работы. Если вы планируете переезд, редизайн или хотите навести порядок в адресах, команда markdev может провести аудит и составить карту редиректов под ваш сайт. Расскажите о задаче, и мы подскажем, с чего начать.
Частые вопросы
Чем 301 редирект отличается от 302?
301 сообщает, что страница переехала навсегда, и поисковики переносят вес на новый адрес. 302 означает временное перенаправление. Для смены адресов, домена и перехода на https нужен именно 301.
Почему после правки .htaccess сайт показывает ошибку 500?
Чаще всего причина — синтаксическая ошибка или правило, которое хостинг не поддерживает, например при выключенном mod_rewrite. Верните сохранённую копию файла и добавляйте правила по одному.
Работает ли .htaccess на nginx?
Нет, nginx этот файл не читает. Там редиректы настраиваются в конфигурации сервера. Если сайт стоит на связке nginx и Apache, уточните у хостинга, какие файлы учитываются.
Можно ли отправить все удалённые страницы на главную?
Лучше не стоит. Редирект имеет смысл на максимально близкую по теме страницу. Если замены нет, корректнее отдать ответ 404 или 410.
Разберём вашу задачу бесплатно
Оставьте контакт — за 15 минут созвона покажем, где теряются заявки и что сделать в первую очередь.