Перенаправление пользователей с "голого" домена (например, example.com ) на домен с www-приставкой (например, www.example.com ) - обычная практика в веб-менеджменте. Она обеспечивает постоянство URL-адресов, с которыми взаимодействуют пользователи, а при правильной настройке может иметь и SEO-преимущества.
HTTP-сервер Apache предоставляет простой способ выполнить такое перенаправление. Модуль mod_rewrite, входящий в состав Apache, позволяет веб-администраторам перенаправлять пользователей в зависимости от условий. Наиболее распространенным вариантом является перенаправление трафика с голого домена на его www-эквивалент.
Если у вас есть файл виртуального хоста для вашего домена, вы можете добавить несколько строк, чтобы добиться такого перенаправления. Если нет, то эти настройки обычно находятся в главном файле конфигурации Apache или в файле .htaccess в корневой директории вашего сайта.
Перенаправление домена на www в Apache с помощью htaccess
В дистрибутивах с поддержкой a2enmod можно просто выполнить приведенную выше команду без необходимости вручную включать необходимые модули.
1 2 | sudo a2enmod rewrite sudo systemctl restart apache2 |
В CentOS и Red Hat модуль включается по умолчанию, поэтому ручное включение модулей не требуется.
Опции | Debian, Ubuntu | openSUSE и SLES | Fedora Core, CentOS, RHEL | macOS | homebrew | xampp |
Поддержка a2enmod | Да | Да | Нет | Нет | Нет | Нет |
Модули для установки | Отсуствуют | |||||
Имя модуля | n/a | rewrite | ||||
Директива Loadmodule | n/a | LoadModule rewrite_module <module_locations>/mod_rewrite.so |
Откройте или создайте файл .htaccess в веб-папке, из которой вы хотите установить перенаправление.
1 | sudo nano /var/www/html/.htaccess |
Добавьте директиву перенаправления из файла .htaccess.
1 2 3 | RewriteEngine On RewriteCond %{HTTP_HOST} ^!example.com$ [NC] RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L] |
301 - это эквивалент постоянного редиректа, а для временного редиректа можно использовать 302.
Справочник HTTP кодов (статусов)
Сохраните и закройте файл.
Перезагрузите веб-страницу (или очистите кэш браузера и перезагрузите его), чтобы проверить работу перенаправления.
Перенаправление домена на www в Apache с помощью Virtualhost
В дистрибутивах с поддержкой a2enmod можно просто выполнить приведенную выше команду без необходимости вручную включать необходимые модули.
1 2 | sudo a2enmod rewrite sudo systemctl restart apache2 |
В CentOS и Red Hat модуль включается по умолчанию, поэтому ручное включение модулей не требуется.
Откройте конфигурацию VirtualHost, с которого вы хотите настроить перенаправление, с помощью вашего любимого текстового редактора.
1 | sudo nano /etc/apache2/sites-enabled/00-default.conf |
Добавьте директиву redirect в конфигурацию VirtualHost.
1 2 3 4 | <VirtualHost *:80> ServerName example.com Redirect permanent / http://www.example.com/ </VirtualHost> |
permanent эквивалентен 301 редиректу, а для 302 редиректа можно использовать temporary .
Сохраните и закройте файл.
Перезапустите Apache, чтобы изменения были применены.
1 | sudo systemctl restart apache2 |
1 | sudo systemctl restart httpd |