Зачем редиректы
Редиректы HTTP → HTTPS и обработка www — обязательная часть SEO-оптимизации любого сайта. Без них: Google и Яндекс могут проиндексировать обе версии (HTTP и HTTPS, с www и без) — это создаёт дубли контента, что снижает ранжирование. Также пользователи получают предупреждение «Not secure» в браузере.
В этом руководстве — готовые шаблоны .htaccess для всех типичных задач. Скопируйте, вставьте в свой .htaccess в корне сайта, проверьте. Конфиги для Apache 2.4 с включённым mod_rewrite (включён по умолчанию).
Готовые шаблоны
1. Force HTTPS (для всех URL)
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]Перенаправляет все HTTP-запросы на HTTPS-версию того же URL. Сохраняет путь и query string. R=301 — постоянный редирект, передаёт SEO-вес.
2. Удалить www (HTTP и HTTPS)
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]Преобразует www.example.com → example.com (без www). Также форсит HTTPS. NC — Not Case (без учёта регистра).
3. Добавить www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]Замените example.com на ваш домен. Если хотите ВСЕГДА с www (вариант 4), но без www тоже работало (без редиректа) — настройте альтернативно.
4. Force HTTPS + удалить www (комбо, ОПТИМАЛЬНОЕ)
RewriteEngine On
# Force HTTPS
RewriteCond %{HTTPS} off [OR]
# Remove www
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]Один-двух-шаговый редирект (вместо двух последовательных). Если HTTP или с www — сразу на HTTPS без www. Замените example.com на ваш домен.
5. Удалить trailing slash
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [L,R=301]Преобразует /page/ → /page. Условие !-d проверяет что это НЕ директория (директории должны иметь slash, иначе ломается доступ к /folder/index.html).
6. Добавить trailing slash
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ /$1/ [L,R=301]Преобразует /page → /page/. Условие !-f исключает файлы (.html, .css, .js не должны иметь slash).
В большинстве случаев следует помещать правила mod_rewrite в основном конфигурационном файле, а не в .htaccess. Файлы .htaccess читаются с диска при каждом запросе, что создаёт нагрузку. Используйте .htaccess только если у вас shared hosting без доступа к main config.— Apache HTTP Server Documentation, mod_rewrite
HSTS для безопасности
HSTS (HTTP Strict Transport Security) — это HTTP-заголовок, который браузер запоминает: «для этого домена ВСЕГДА HTTPS, не делать HTTP-запросов». Защита от SSL stripping.
<IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" </IfModule>
- max-age=31536000 — год (в секундах). Браузер помнит, что сайт всегда HTTPS.
- includeSubDomains — применить и к поддоменам. Если есть HTTP-поддомены, не добавляйте.
- preload — позволяет добавить домен в встроенный preload-список Chrome/Firefox через hstspreload.org.
ВНИМАНИЕ: HSTS «застревает» в браузерах. Если опубликовали с max-age=31536000, потом передумали — пользователи в течение года будут получать ошибку. Для тестов сначала ставьте max-age=300 (5 минут).
Дополнительные security-заголовки
<IfModule mod_headers.c> # XSS защита (deprecated, но не вредит) Header set X-XSS-Protection "1; mode=block" # Защита от MIME sniffing Header set X-Content-Type-Options "nosniff" # Запрет iframe (защита от clickjacking) Header set X-Frame-Options "SAMEORIGIN" # Referrer policy Header set Referrer-Policy "strict-origin-when-cross-origin" # Permissions Policy (бывший Feature Policy) Header set Permissions-Policy "geolocation=(), microphone=(), camera=()" </IfModule>
Как проверить редиректы
- curl -I http://example.com — посмотреть заголовки. Должен быть
HTTP/1.1 301 Moved PermanentlyиLocation: https://example.com/. - Chrome DevTools → Network → ищите цепочку редиректов. Идеально — один редирект, не два.
- httpstatus.io — онлайн-проверка цепочки редиректов. Покажет, сколько прыжков и финальный URL.
- Yandex Webmaster → раздел «Индексирование» → «Страницы в поиске» — видно, как поисковик обрабатывает редиректы.
- SSL Labs SSL Test (ssllabs.com/ssltest) — проверка HTTPS-конфигурации, в том числе HSTS.
- Apache mod_rewrite Documentation. Apache Software Foundation. httpd.apache.org/docs/2.4/mod/mod_rewrite.html. 2024.
- RFC 6797 — HTTP Strict Transport Security. IETF. datatracker.ietf.org/doc/html/rfc6797. 2012.
- OWASP — Secure Headers Project. OWASP. owasp.org/www-project-secure-headers. 2024.
