Что такое .htaccess и когда он работает
.htaccess — это конфигурационный файл сервера Apache (или совместимого LiteSpeed). Кладётся в корень сайта или в подпапку. Действует на ту папку и всё ниже.
Если у вас nginx — .htaccess не работает, всё настраивается в основном nginx.conf. Если Bitrix на нем работает — Apache используется как обработчик за nginx-фронтендом, и .htaccess нужен.
Когда использовать:
- Общий хостинг (Beget, REG.RU, Timeweb) — там обычно Apache, .htaccess стандартный путь.
- Bitrix-проекты — встроенный .htaccess от платформы.
- WordPress на shared hosting — .htaccess управляет permalinks и редиректами.
Когда НЕ нужен:
- VPS с nginx-only — настраиваем nginx.conf.
- Next.js / Vite SPA на CDN — там middleware или edge-функции.
Основные сценарии .htaccess для SEO
1. Редирект с www на без www (или наоборот)
Без редиректа www.example.com и example.com — два разных сайта для поисковика, ссылочный вес делится.
С www → без www:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
Без www → с www:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} !=localhost [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
Выбор между www и без www — индивидуальный. Google не предпочитает один формат. Главное — выбрать один и редиректить всё на него.
2. Редирект с http на https
После установки SSL-сертификата (см. гайд по SSL):
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
301 — обязательно. 302 не передаёт SEO-вес.
3. Редирект со слешем / без слеша
/blog/article/ и /blog/article — для Apache одинаковые страницы (обычно). Для SEO — потенциальный дубль.
Решение — выбрать формат и редиректить:
Добавить слеш в конце:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)([^/])$ /$1$2/ [R=301,L]
Убрать слеш в конце:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [R=301,L]
WordPress, OpenCart — обычно со слешем. Bitrix — без слеша.
4. Редирект конкретных URL (после редизайна)
Когда меняете URL-структуру, нужно сохранить SEO старых страниц через 301:
Redirect 301 /old-page /new-page
Redirect 301 /staraya-statya /novaya-statya
Redirect 301 /catalog/phones /catalog/smartfony
Или массово через RewriteRule:
RewriteRule ^old-catalog/(.*)$ /new-catalog/$1 [R=301,L]
5. Gzip-сжатие
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript
AddOutputFilterByType DEFLATE application/javascript application/x-javascript application/json
AddOutputFilterByType DEFLATE application/xml application/xhtml+xml application/rss+xml
AddOutputFilterByType DEFLATE image/svg+xml font/ttf font/otf font/woff font/woff2
</IfModule>
Эффект: HTML/CSS/JS трафик меньше на 60-80%. Проверка — в HTTP-проверке заголовок Content-Encoding: gzip.
6. Кеш-заголовки для статики
<IfModule mod_expires.c>
ExpiresActive On
# Картинки кешировать на год
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
# CSS / JS на месяц
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
# Шрифты на год
ExpiresByType font/woff "access plus 1 year"
ExpiresByType font/woff2 "access plus 1 year"
# HTML не кешировать (всегда свежий)
ExpiresByType text/html "access plus 0 seconds"
</IfModule>
<IfModule mod_headers.c>
<FilesMatch "\.(jpg|jpeg|png|gif|webp|svg|css|js|woff|woff2)$">
Header set Cache-Control "public, max-age=31536000, immutable"
</FilesMatch>
</IfModule>
Эффект: второй и последующий заходы — практически мгновенные. Сильно влияет на CWV и метрики возврата.
7. Защита от хотлинка картинок
Чтобы другие сайты не «крали» ваши картинки, вставляя их через img-теги:
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp)$ - [F,NC]
Замените example.com на свой домен. Картинки будут открываться только при заходе с вашего сайта.
8. Запрет индексации служебных папок
Хотя robots.txt стандарт, дополнительно можно отдать X-Robots-Tag через сервер:
<FilesMatch "\.(pdf|docx|xlsx)$">
Header set X-Robots-Tag "noindex"
</FilesMatch>
Все скачиваемые документы — не в индекс поисковика.
9. Кастомные страницы ошибок
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html
Лучше отдавать «человеческие» 404 с поиском по сайту и ссылками на популярные разделы, чем стандартное «Not Found».
10. Запрет доступа к чувствительным файлам
<Files ".env">
Order allow,deny
Deny from all
</Files>
<FilesMatch "\.(sql|log|conf|bak)$">
Order allow,deny
Deny from all
</FilesMatch>
Защищает от случайного доступа к конфигам и бекапам через прямой URL.
Типичные ошибки
1. Слишком много правил → 500-я ошибка
.htaccess исполняется на каждый запрос. Чем больше правил, тем медленнее. Если правила синтаксически неправильны — сервер отдаёт 500.
Решение: проверяйте после каждого изменения. Один синтаксис ошибки = сайт лежит.
2. Цепочки редиректов
http://www.example.com/page → https://www.example.com/page → https://example.com/page — два редиректа подряд. Поисковик может «бросить» цепочку.
Решение: одним правилом сразу на финальный URL:
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
3. Редирект-петля
/old → /new → /old. Сайт ложится в бесконечный 301. Браузер показывает «ERR_TOO_MANY_REDIRECTS».
Решение: перед каждым RewriteRule — RewriteCond ограничивающий триггер.
4. 302 вместо 301
Redirect 302 не передаёт SEO-вес. Поисковик считает редирект «временным». В .htaccess по умолчанию 302, нужно явно указывать 301:
Redirect 301 /old /new
RewriteRule ... [R=301,L]
5. Конфликт с CMS
WordPress, OpenCart, Bitrix имеют свои блоки в .htaccess. Никогда не трогайте строки между # BEGIN WordPress и # END WordPress — CMS их перезаписывает.
Ваши правила добавляйте выше или ниже этих блоков.
Проверка после изменений
- Откройте сайт — он работает? Если нет —
.htaccessсломан, откатывайте. - Проверка HTTP-заголовков — увидите gzip, cache-control, https.
- Проверка редиректов — для нового URL должен быть прямой 200, для старого — 301 → новый.
- Скорость: тест скорости — должен ускориться (благодаря gzip и кешу).
- Search Console через 7-14 дней — отсутствие новых 4xx/5xx ошибок.
Что делать дальше
- Сделайте резервную копию текущего
.htaccess— на случай если что-то сломаете. - Добавьте 4 базовых правила: редирект на https, выбор www, gzip, кеш-заголовки.
- Откройте сайт — проверьте что работает.
- Проверьте HTTP-заголовки — должны появиться
Content-Encoding: gzip,Cache-Control: max-age=..., статус 301 для редиректов. - Сгенерируйте .htaccess — наш онлайн-конструктор соберёт готовый файл под вашу CMS и нужные опции.
.htaccess — это «панель управления» поведением Apache. Один файл решает половину технических задач SEO: редиректы, скорость, кеш, безопасность. Час на правильную настройку = годы корректной работы сайта.
Попробовать SEOAdmin бесплатно
30 SEO-инструментов в одном кабинете. 100 поинтов бесплатно при регистрации, без карты.

