opened image

Как сделать 301 редирект с www на без www (и наоборот)

 

 

 

Веб-серверы и поисковые системы различают адреса с префиксом www и без него как два отдельных ресурса. Так, www.example.com и example.com с технической точки зрения — разные сайты. Если содержимое на них идентично, это может привести к дублям страниц в индексе поисковых систем, снижению SEO-рейтинга и потере трафика. Чтобы этого избежать, необходимо выполнить принудительный 301 редирект, который навсегда укажет, какой вариант является приоритетным.

С точки зрения системного администратора с двадцатилетним опытом, такая практика должна быть обязательной при вводе сайта в эксплуатацию. Ниже представлены надёжные методы реализации редиректа как для Apache (через .htaccess), так и для nginx.

 

 

301 редирект с www на без www через .htaccess (Apache)

 

Пример 1: редирект www на без www

 

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

 

 

 

 

Пример 2: редирект без www на www

 

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

 

 

 

 

Комментарии администратора:

  • Регулярные выражения экранируют точку (\.), чтобы указать именно домен, а не любой символ.

  • Параметр [NC] означает "без учёта регистра" (например, WWW.EXAMPLE.COM тоже обработается).

  • Всегда проверяйте работоспособность сайта после внесения изменений — малейшая ошибка может привести к 500 Internal Server Error.

 

 

301 редирект с www на без www через nginx

 

Пример 1: редирект с example.com на www.example.com

 

server {
    listen 80;
    server_name example.com;
    return 301 $scheme://www.example.com$request_uri;
}

 

 

Пример 2: редирект с www.example.com на example.com

 

server {
    listen 80;
    server_name www.example.com;
    return 301 $scheme://example.com$request_uri;
}

 

 

Проверка и применение изменений:

 

После внесения правок в конфигурацию nginx:

 

nginx -t

 

Если ошибок нет:

 

service nginx reload

 

Или при необходимости:

 

service nginx restart

 

 

Дополнительные примеры и рекомендации

 

Универсальный редирект (динамический для любых доменов)

 

server {
    listen 80;
    server_name ~^www\.(?<domain>.+)$;
    return 301 https://$domain$request_uri;
}

 

 

Этот пример использует регулярное выражение для любого поддомена www., направляя его на основной домен без www.

 

Apache — универсальный редирект

 

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

 

 

 

 

Это правило автоматически удаляет www. с любого домена.

 

 

Почему важен 301 редирект

 

  • SEO: исключает дубли страниц и повышает доверие поисковых систем.

  • Безопасность: позволяет настроить единый HSTS-профиль и избежать конфликтов с сертификатом SSL.

  • Скорость и стабильность: пользователи всегда попадают на основной домен, независимо от ввода.

 

 

Настраивая 301 редиректы, особенно в вопросах "www против без www", важно понимать, что это не просто технический нюанс, а один из тех малозаметных элементов, которые отличают аккуратно построенную инфраструктуру от хаоса. Не опытные разворазивают сайты, которые теряют позиции в поиске из-за дублированных URL, сталкивалаясь с ошибками при настройке HTTPS и даже блокировались браузерами из-за конфликтов с сертификатами.

 

Всё начинается с банального — не настроили правильный редирект.

 

Правильный 301 — это не только SEO. Это доверие. Это порядок в URI. Это предсказуемость поведения сайта. Он избавляет от неоднозначности и делает систему понятной как людям, так и машинам.

 

Вот несколько принципов, которыми я лично руководствуюсь:

 

Делайте выбор один раз — и будьте в нём последовательны

 

Решили использовать example.com — везде используйте именно его. Пропишите редирект, обновите robots.txt, настройте канонические ссылки и проверьте конфигурации CMS. Не допускайте микса в исходящих ссылках.

 

Редирект должен быть строгим и быстрым

 

Не усложняйте логику. Используйте 301 permanent вместо 302, если это ваш окончательный выбор. Обеспечьте минимальное количество переходов и отсутствие циклических переадресаций.

 

Тестируйте в песочнице

 

Перед применением на проде — протестируйте. Например, на поддомене test.example.com. Особенно если речь идёт о wildcard-редиректах с регулярными выражениями.

 

Всегда проверяйте влияние на SEO

 

Проверьте в Google Search Console, как индексируются страницы. Посмотрите отчёты по дублирующим URL. Редирект — это операция на уровне инфраструктуры, но последствия у неё поисковые и коммерческие.

 

Делайте резервные копии конфигураций

 

Простое правило: перед каждым изменением .htaccess или nginx.conf — копия в карман. Это спасёт не один раз. А ещё лучше — ведите версионирование (например, через git).

 

 

 

Редирект — это как дорожный знак: он не должен путать, он должен направлять. Хороший администратор — это тот, кто предугадывает, куда пользователь пойдёт дальше, и помогает ему не заблудиться. 301 — это ваше "направо" вместо тупика.

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

 

 

Заключение

 

Настройка корректного 301 редиректа между версией сайта с www и без www — важная часть базовой оптимизации и администрирования. Это должно входить в чек-лист при запуске любого веб-проекта. Независимо от выбранного веб-сервера, реализация занимает считанные минуты, но приносит ощутимую пользу как в плане безопасности, так и SEO.

Если вы используете Apache, правки в .htaccess применяются сразу. Для nginx — не забудьте перезагрузить конфигурацию после проверки. И главное: всегда тестируйте изменения, чтобы избежать недоступности сайта.