- Home »

Как перенаправить 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). Второй способ гибче, но чуть сложнее.
Схема простая:
- Виртуальный хост для www.site.com ловит все запросы на www.
- В этом хосте прописываем редирект на site.com (301 — навсегда).
- Виртуальный хост для 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 или выделенный сервер можно прямо здесь на блоге.
Пусть твои редиректы будут быстрыми, а сайты — каноничными!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.