Home » Как перенаправить www на без www в Apache на Ubuntu 24.04
Как перенаправить www на без www в Apache на Ubuntu 24.04

Как перенаправить www на без www в Apache на Ubuntu 24.04

Сегодня разберём одну из тех задач, которые кажутся мелочью, но на деле могут здорово повлиять на SEO, безопасность и даже на нервы админа: как грамотно и быстро перенаправить все запросы с www на без www в Apache на свежей Ubuntu 24.04. Если ты когда-нибудь ловил себя на мысли “почему у меня сайт открывается и по www, и без, а иногда ещё и с разными сертификатами”, — эта статья для тебя. Здесь не будет занудных теорий, только практика, реальные кейсы, грабли и лайфхаки. Погнали!

Зачем вообще перенаправлять www на без www?

  • SEO и каноничность: Поисковики считают www.site.com и site.com разными сайтами. Два адреса — два индекса, дубли, проблемы с ранжированием.
  • SSL-сертификаты: Сертификат может быть выписан только на один вариант. Если не настроить редирект — пользователи увидят страшное предупреждение.
  • Кэширование и куки: Некоторые сервисы и браузеры могут по-разному кэшировать www и non-www. Это чревато багами.
  • Просто порядок: Один адрес — одна точка входа. Легче настраивать, легче поддерживать, меньше путаницы.

В общем, если хочешь, чтобы твой сайт выглядел профессионально, был удобен для пользователей и не вызывал головной боли у поисковиков — делай редирект. А теперь — к сути.

Как это работает?

В Apache всё крутится вокруг виртуальных хостов (VirtualHost). Мы можем задать отдельный блок для www-версии сайта и прописать в нём редирект на non-www. Это делается через директиву Redirect или через RewriteEngine (модуль mod_rewrite). Второй способ гибче, но чуть сложнее.

Схема простая:

  1. Виртуальный хост для www.site.com ловит все запросы на www.
  2. В этом хосте прописываем редирект на site.com (301 — навсегда).
  3. Виртуальный хост для site.com обслуживает основной сайт.

Выглядит это примерно так:


Запрос: https://www.site.com/page
Редирект: https://site.com/page

Как быстро и просто всё настроить?

Показываю на примере Ubuntu 24.04 и Apache 2.4.x. Предполагается, что Apache уже стоит и работает. Если нет — ставим:


sudo apt update
sudo apt install apache2

Дальше — по шагам.

1. Включаем mod_rewrite (если ещё не включён)


sudo a2enmod rewrite
sudo systemctl reload apache2

2. Создаём или редактируем конфиг виртуального хоста

Файлы обычно лежат в /etc/apache2/sites-available/. Например, site.com.conf.

Вариант 1: Через Redirect


<VirtualHost *:80>
    ServerName www.site.com
    Redirect permanent / http://site.com/
</VirtualHost>

<VirtualHost *:80>
    ServerName site.com
    DocumentRoot /var/www/site.com
    # Остальные настройки
</VirtualHost>

Вариант 2: Через mod_rewrite (гибче, можно сохранять путь и параметры)


<VirtualHost *:80>
    ServerName www.site.com
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www\.site\.com$ [NC]
    RewriteRule ^(.*)$ http://site.com/$1 [L,R=301]
</VirtualHost>

<VirtualHost *:80>
    ServerName site.com
    DocumentRoot /var/www/site.com
    # Остальные настройки
</VirtualHost>

Если нужен HTTPS — аналогично, только :443 и с настройками SSL.

3. Активируем сайт и перезапускаем Apache


sudo a2ensite site.com.conf
sudo systemctl reload apache2

4. Проверяем

Открываем http://www.site.com — должно редиректить на http://site.com (или https, если настроено).

Примеры, схемы, практические советы

Метод Плюсы Минусы Когда использовать
Redirect Просто, понятно, быстро Не сохраняет параметры запроса, не гибко Статичные сайты, простые задачи
mod_rewrite Гибко, можно сохранять путь, параметры, условия Чуть сложнее, нужен mod_rewrite Динамические сайты, сложные редиректы
.htaccess Можно на shared-хостинге, не нужен root Медленнее, не всегда разрешено Когда нет доступа к конфигам Apache

Положительный кейс

У клиента был сайт на WordPress, сертификат только на site.com. Без редиректа пользователи иногда попадали на https://www.site.com и видели ошибку SSL. После настройки редиректа через mod_rewrite — все запросы на www уходят на non-www, сертификат работает, SEO-метрики выросли.

Отрицательный кейс

Другой проект: редирект настроили через .htaccess, но забыли про кэширование. В итоге поисковики долго видели обе версии, а пользователи попадали в редирект-луп из-за неправильных условий. Решение: всегда проверяй логику редиректа и используй 301, а не 302.

Команды и конфиги — шпаргалка


# Включить mod_rewrite
sudo a2enmod rewrite
sudo systemctl reload apache2

# Создать новый виртуальный хост
sudo nano /etc/apache2/sites-available/site.com.conf

# Активировать сайт
sudo a2ensite site.com.conf
sudo systemctl reload apache2

# Проверить конфиг на ошибки
sudo apache2ctl configtest

Похожие решения, программы и утилиты

  • Nginx: Там редиректы делаются через server и return 301. Пример — официальная дока.
  • Caddy: Современный веб-сервер, редиректы настраиваются в пару строк. Документация.
  • Cloudflare: Можно делать редиректы на уровне DNS/Edge, но это уже другая история.

Статистика и сравнение с другими решениями

  • По данным W3Techs, Apache обслуживает около 30% всех сайтов в мире. Значит, задача актуальна для миллионов проектов.
  • Редиректы через Apache быстрее, чем через PHP или CMS-плагины, потому что обрабатываются на уровне сервера.
  • mod_rewrite — самый гибкий способ, поддерживает регулярки, условия, цепочки правил.

Интересные факты и нестандартные способы использования

  • Можно делать редиректы не только с www на non-www, но и между разными доменами, поддоменами, портами, даже протоколами (http <-> https).
  • mod_rewrite позволяет делать A/B тестирование, временные редиректы, даже простые API-gateway задачи.
  • В связке с cron и certbot можно автоматизировать выпуск сертификатов и автоматом обновлять конфиги для новых поддоменов.

Автоматизация и скрипты — новые возможности

Если у тебя десятки сайтов, можно автоматизировать создание виртуальных хостов и редиректов через bash-скрипты. Например, скрипт, который принимает домен и сам генерирует нужный конфиг с редиректом, активирует его и перезапускает Apache. Это экономит часы рутины и снижает риск ошибок.


#!/bin/bash
DOMAIN=$1
CONF="/etc/apache2/sites-available/$DOMAIN.conf"
cat <<EOF | sudo tee $CONF
<VirtualHost *:80>
    ServerName www.$DOMAIN
    Redirect permanent / http://$DOMAIN/
</VirtualHost>

<VirtualHost *:80>
    ServerName $DOMAIN
    DocumentRoot /var/www/$DOMAIN
</VirtualHost>
EOF

sudo a2ensite $DOMAIN.conf
sudo systemctl reload apache2

Можно интегрировать это с Ansible, Puppet, Chef — и тогда развёртывание новых сайтов станет делом пары минут.

Вывод — заключение и рекомендации

Перенаправление www на без www — это не просто “чтобы красиво”, а реальная необходимость для любого серьёзного сайта. Это влияет на SEO, безопасность, удобство пользователей и даже на скорость работы. В Apache на Ubuntu 24.04 всё делается в пару шагов: включаем mod_rewrite, прописываем редирект в виртуальном хосте, перезапускаем сервер — и готово. Не забывай тестировать, использовать 301 (постоянный) редирект и проверять, чтобы не было циклов.

Если хочешь автоматизировать процесс — используй скрипты или инструменты управления конфигурациями. А если нужен VPS или выделенный сервер для своих экспериментов и проектов — заказать VPS или выделенный сервер можно прямо здесь на блоге.

Пусть твои редиректы будут быстрыми, а сайты — каноничными!


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked