Справочник

Переадресация с www на адрес без www в .htaccess

Выберите главный адрес сайта — с www или без — и добавьте в .htaccess правило, которое переводит второй адрес на главный кодом 301. Чтобы переадресация сработала, имя с www должно быть в DNS и в сертификате.

≈ 5 мин чтения
Содержание 10

Что сделать прямо сейчас

  1. Решите, какой адрес главный — с www или без. Подходят оба; главное — выбрать один и ставить ссылки на него.
  2. Проверьте, что имя с www есть в DNS и в сертификате — зачем это нужно.
  3. Сохраните копию .htaccess и добавьте правило в начало файла — с www на адрес без www или наоборот.
  4. Проверьте переадресацию — как проверить.

Перед настройкой

Переадресация срабатывает, только когда запрос уже дошёл до сервера. Поэтому:

  • Имя www.example.com должно быть в DNS — запись A или CNAME. Без неё браузер не найдёт сервер, и до правила дело не дойдёт. Какие записи бывают, как проверить запись.
  • Сертификат должен быть выпущен и на example.com, и на www.example.com. Браузер проверяет сертификат до того, как получит ответ с переадресацией: без имени www в сертификате тот, кто откроет https://www.example.com, увидит предупреждение. Бесплатный SSL-сертификат.

С www на адрес без www

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]

Замените example.com на свой домен в обеих строках. Обратная косая черта перед точкой в условии нужна: без неё точка значит «любой символ». Флаг [NC] — без учёта регистра: правило сработает и для WWW.Example.com.

Вариант без имени домена — подходит, если на одной папке работают несколько доменов:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]

%1 — то, что попало в скобки условия, то есть имя без www.

С адреса без www на www

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [L,R=301]

Строка RewriteEngine On нужна в файле один раз: если она уже есть выше, повторять её не нужно.

Вместе с переадресацией на HTTPS

Если в файле есть и правило HTTPS, и правило www, адрес http://www.example.com/ пройдёт две переадресации подряд. Их можно объединить в одну — это правило ставят в начало файла вместо обоих:

RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]

[OR] значит «или»: переадресация сработает, если запрос пришёл не по HTTPS или в имени есть www. Условие %{HTTPS} !=on — для своего VPS. На хостинге замените его условием своего хостинга из статьи про HTTPS и допишите в конце [OR]. Если условие хостинга занимает две строки, оставьте два отдельных правила: сначала HTTPS, потом www.

Если главный адрес — с www, замените вторую строку условием RewriteCond %{HTTP_HOST} ^example\.com$ [NC], а в последней строке поставьте адрес https://www.example.com%{REQUEST_URI}.

Кириллический домен

Домены на кириллице в .htaccess пишут в punycode — латиницей, в том виде, в каком их передаёт браузер. Так советует Timeweb. Например, пример.рф в punycode — xn--e1afmkfd.xn--p1ai. Перевести своё имя можно командой на сервере, подключившись к нему по SSH:

python3 -c "print('пример.рф'.encode('idna').decode())"

Подставьте ответ в условие, экранируя точки:

RewriteCond %{HTTP_HOST} ^www\.xn--e1afmkfd\.xn--p1ai$ [NC]

Как проверить

В терминале компьютера (как открыть терминал) введите:

curl -I http://www.example.com/

В первой строке ответа должно стоять число 301, в строке Location — главный адрес, например https://example.com/. Затем проверьте главный адрес: curl -I https://example.com/ — в первой строке должно быть 200, а строки Location не должно быть.

Браузер запоминает ответ 301, поэтому после исправления правила проверяйте через curl или в окне инкогнито.

Ошибки и как их исправить

Что видитеЧто делать
ERR_TOO_MANY_REDIRECTSправила ведут на разные адреса, например CMS — на адрес с www, а .htaccess — без www; адрес в настройках CMS и правило должны совпадать — разбор
адрес с www не открывается совсемнет записи в DNS — как проверить
на www браузер предупреждает о сертификатеимени www нет в сертификате — выпустите сертификат на оба имени
ошибка 500на VPS не включён mod_rewrite — как включить; другие причины — разбор
правило не срабатываетпроверьте домен в условии; кириллический домен — в punycode

Источники

Сверено 14 октября 2026 года.

Что почитать дальше