Издревле ломают голову сеошники над вопросом. Вопрос ставиться по-гамлетовски : с www или без www? «Быть или не быть, вот в чем вопрос».
Быть или не быть WWW?
Если речь идет о сайте без какой либо «истории», то рекомендую выбирать вариант без «WWW». Во-первых, это анахронизм. Во-вторых, этот префикс не несет для SEO смысловой нагрузки, а все лишнее принято отсекать. В-третьих, технически, домен с www — это домен 3-го уровня. А уровень домена может быть фактором ранжирования. В случае с «www» — это сомнительно, но кто ж глядел в эти алгоритмы поисковых систем?
Тем не менее, псевдоним сайта с www нужно настроить, чтобы сайт мог быть открыт и по этому адресу.
Для сайтов с историей, лучше не «дергаться» и остановиться на той версии домена, которая была выбрана поисковыми системами как основная.
Если вы уже определились с версий домена (быть или не быть www в названии вашего сайта), то можно переходить к следующему этапу.
Переадресация с www и обратно на Apache
Чтобы исправить запросы к сайту, идущие по «неправильному» пути, используйте переадресацию.
Управление переадресацией можно сделать как программно, так и используя настройки сервера. Если ваш сервер — Apache, то:
Во-первых, нам понадобится модуль Apache mod_rewrite. Убедитесь, что он подключен и работает.
Во-вторых, мы внесем изменения в файл .htaccess в корне сайта.
Если вам нужен редирект с ВашДомен.Ру на www.ВашДомен.Ру:
1 2 3 4 5 6 |
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^ВашДомен\.Ру RewriteRule (.*) http://www.ВашДомен.Ру/$1 [R=301,L] </IfModule> |
Обратный случай (c www на без www):
1 2 3 4 5 6 |
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www\.ВашДомен\.Ру RewriteRule (.*) http://ВашДомен.Ру/$1 [R=301,L] </IfModule> |
Учтите, что .htaccess может уже содержать секцию rewrite, тогда добавьте недостающие строки после
1 |
RewriteEngine On |
Переадресация с www и обратно на NGINX
Если ваш web-сервер основан на nginx, пороемся в конфигах. Нужный файл ищите где то тут (для unix-like hosting):
1 |
/etc/nginx/nginx.conf |
или для мультисайтового хостинга что то вроде:
1 |
/etc/nginx/site-available/ВашДомен.conf |
В этом файле нужно будет добавить секцию перед другими секциями server:
Случай редиректа с ВашДомен.Ру на www.ВашДомен.Ру:
1 2 3 4 |
server { server_name ВашДомен.Ру; return 301 $scheme://www.ВашДомен.Ру$request_uri; } |
Обратный случай
1 2 3 4 |
server { server_name www.ВашДомен.Ру; return 301 $scheme://ВашДомен.Ру$request_uri; } |
Нужна ли переадресация?
Формально — она не нужна. Т.к. поисковые системы рано или поздно сопоставят 2+2 и обнаружат что ВашСайт.Ру и www.ВашСайт.Ру — одно и тоже.
Для этого желательно настроить главное зеркало сайта в файле robots.txt. Не лишнем будет и формирование канонической ссылки. Этого будет достаточно, чтобы ПС-ы правильно вас проиндексировали (c www или без www).
В некоторых случаях переадресация ускоряет переиндексацию сайта, т.к. вы явно указываете роботу, что старая страница теперь вот тут. Это также «мешает» пользователю делиться «неправильными» ссылками на ваш сайт.
а если при обращении к сайту по аресу http://www.мойсайт.ru я получаю 404 ошибку. это нормально? или всё-таки я должен попадать на https://мойсайт.ru при обращении через www?
Это не нормально, это плохо. Но это отдельный кейс, связанный с переадресацией с http на https. Его тоже можно настроить на разных этапах обращения к сайту. Обычно на уровне хостинг провайдера предоставляется возможность переадресовать http запросы на https. Но если этого нет, то тогда в конфигах apache/nginx (или что у вас там).