Редирект домена с www на без www на Apache в CentOS 7
16 июня, 2015 12:56 пп 3 292 views | Комментариев нетCentos, Cloud Server | Amber | Комментировать запись
Когда сайт или приложение запущено на домене, часто возникает необходимость позволить пользователям открывать его при помощи простого домена и поддомена www. То есть, пользователи должны иметь возможность посетить домен и с префиксом www, и без него (например: example.com или www.example.com), и при этом получить доступ к одному и тому же контенту. Существует множество способов решения этой проблемы. Лучше всего заранее определиться, какой домен вам подходит больше (с префиксом или без), а затем настроить переадресацию второго домена на основной. Такой редирект называется постоянным (Permanent Redirect), или 301. Его настройки содержатся в конфигурациях DNS и веб-сервера.
Это руководство покажет, как настроить редирект URL-а с префиксом www на URL без префикса на веб-сервере Apache в системе CentOS 7 (например, с www.example.com на example.com).
Примечание: Аналогичную статью для Ubuntu 14.04 можно найти по этой ссылке. Чтобы настроить такую переадресацию на веб-сервере Nginx в CentOS 7, читайте данную статью.
Требования
Для выполнения инструкций нужны права суперпользователя (sudo или root). Подробнее об этом можно узнать в статье «Начальная настройка сервера CentOS 7».
Кроме того, нужно предварительно установить Apache. Полезные статьи по установке и настройке этого веб-сервера можно найти в специальном разделе данного сайта.
Также нужно иметь возможность добавлять DNS-записи.
Настройка DNS-записи
Чтобы настроить редирект с www.example.com на example.com (или наоборот), нужно создать запись для каждого имени.
Откройте панель управления DNS.
Если записи домена ещё не существует, создайте её сейчас.
Затем создайте еще одну запись А, на этот раз для адреса с префиксом www, указав тот же IP-адрес.
Примечание: Такой редирект работает и с записями CNAME, поскольку запись А канонического имени привязана к IP-адресу веб-сервера Apache.
Теперь сервер доступен по двум доменам: с префиксом www и без него. Можно начинать настройку редиректа.
Настройка редиректа Apache
Для настройки редиректа 301 в Apache используется модуль mod_rewrite, который позволяет переадресовывать пользователей на любой необходимый домен (в том числе и на домен без префикса www).
В системе CentOS 7 модуль Rewrite включен по умолчанию. Если же в вашем случае это по какой-либо причине не так, внесите следующую строку в раздел modules конфигураций Apache (по умолчанию /etc/httpd/conf.
LoadModule rewrite_module modules/mod_rewrite.so
Включение файла .htaccess
Apache выполняет редиректы при помощи файла .htaccess. Для включения этой функции нужно понизить права каталога DocumentRoot.
Откройте конфигурационный файл Apache для редактирования; в системе CentOS он находится в /etc/httpd/conf/httpd.conf:
sudo vi /etc/httpd/conf/httpd.conf
Если сайт находится в стандартном DocumentRoot (/var/www/html), найдите блок кода <directory “/var/www/html>. В нём измените AllowOverride None на AllowOverride All:
<Directory /var/www/html>
...
AllowOverride All
...
</Directory>
Сохраните и закройте файл.
Перезапустите Apache, чтобы обновить настройки:
sudo systemctl restart httpd
Теперь Apache настроен для чтения .htaccess, находящихся в любом подкаталоге каталога /var/www/html. Теперь добавьте правила Rewrite.
Настройка модуля Rewrite
Теперь можно настроить модуль Rewrite при помощи включённого файла .
(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Сохраните и закройте файл, после чего изменения будут активированы. При использовании HTTPS не забудьте заменить http в строке RewriteRule на https.
Затем используйте следующую команду curl, чтобы убедиться, что редирект настроен верно (не забудьте указать свой домен):
curl -I http://example.com
На экране появится сообщение, которое показывает, что точкой редиректа является домен с префиксом:
Output:
HTTP/1.1 301 Moved Permanently
Server: Apache/2.4.6 (CentOS)
Location: http://www.example.com/
Content-Type: text/html; charset=iso-8859-1
Конечно, необходимо также проверить редирект в браузере.
Заключение
Как видите, настройка редиректа на сервере Apache – довольно простой процесс. Теперь ваш сайт доступен по двум доменам: с префиксом и без него.
Чтобы получить более подробную информацию о mod_rewrite, читайте руководство «Настройка Mod_Rewrite».
(.*)$ http://new_name.ru/$1 [L,R=301]
301 редирект с 404 Not Found
Код 404 Not Found (страница не найдена) присваивается удалённой или несуществующей странице на сайте, а также часто возникает при попутке неправильно ввести url-адрес. Создание постоянного перенаправления с таких страниц актуально для контентных сайтов и крупных интернет-магазинов, где страницы часто удаляются по естественным причинам. Тогда возникает потребность перенаправить посетителей на одну из главных страниц сайта, чтобы они не уходили с ресурса, при виде ошибки.
301 редирект для страниц 404 Not Found сделать совсем несложно. Например, этот код перенаправит со всех 404-страниц на главную сайта:
ErrorDocument 404 http://www.domain.com/dont_exit.html
Редирект с главной страницы site.ru/index.php на основное зеркало site.ru
В тех случаях, когда главная страница сайта может быть недоступна по нескольким адресам одновременно, применяют следующую конструкцию:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.
(.*)$ http://site.ru/ [L,R=301]
Выбор между URL-адресами с www и без www — HTTP
Владельцы веб-сайтов постоянно задаются вопросом, что выбрать: URL-адреса без www или без www. На этой странице приведены некоторые советы о том, что лучше.
В URL-адресе HTTP первая подстрока, следующая за начальным http:// или https:// , называется доменным именем. Это доменное имя размещено на сервере, где находится документ.
Сервер не обязательно является физической машиной: несколько серверов могут находиться на одной физической машине. Или один сервер может обслуживаться несколькими машинами, взаимодействующими для получения ответа или распределяющими нагрузку запросов между ними. Ключевым моментом является то, что семантически одно доменное имя представляет один единственный сервер .
- Да , вам нужно выбрать один и придерживаться его. Выбор за вами в качестве вашего канонического местоположения, но если вы выберете одно, придерживайтесь его.
Это сделает ваш сайт более последовательным для ваших пользователей и поисковых систем. Это включает в себя всегда связывание с выбранным доменом (что не должно быть сложным, если вы используете относительные URL-адреса на своем веб-сайте) и всегда обмен ссылками (по электронной почте / социальным сетям и т. д.) на один и тот же домен. - Нет , можно два. Важно то, что вы последовательно и согласуетесь с тем, какой из них является официальным доменом. Этот официальный домен называется каноническим именем . Все ваши абсолютные ссылки должны использовать его. Но даже в этом случае у вас все еще может работать другой домен: HTTP позволяет использовать два метода, чтобы вашим пользователям или поисковым системам было ясно, какой домен является каноническим, в то же время позволяя неканоническому домену работать и предоставлять ожидаемые страницы.
Итак, выберите один из ваших доменов в качестве канонического! Ниже приведены два метода, позволяющие неканоническому домену работать.
Существует несколько способов выбрать, какой веб-сайт является каноническим .
Использование перенаправления HTTP 301
В этом случае вам необходимо настроить сервер, получающий HTTP-запросы (который, скорее всего, одинаков для URL-адресов с www и без www), чтобы он отвечал адекватным HTTP-ответом 301 на любой запрос. в неканонический домен. Это перенаправит браузер, пытающийся получить доступ к неканоническим URL-адресам, на их канонический эквивалент. Например, если вы решили использовать URL-адреса без www в качестве канонического типа, вам следует перенаправить все URL-адреса с www на их эквивалентные URL-адреса без www.
Пример:
- Сервер получает запрос на
http://www.example.org/whaddup(если каноническим доменом является example.org) - Сервер отвечает кодом
301с заголовком.Местоположение: http://example.org/whaddup - Клиент выдает запрос к каноническому домену:
http://example.
org/whatddup
Шаблонный проект HTML5 содержит пример настройки сервера Apache для перенаправления одного домена на другой.
Использование
На страницу можно добавить специальный элемент HTML , чтобы указать канонический адрес страницы. Это не влияет на человека, читающего страницу, но сообщает поисковым роботам, где на самом деле находится страница. Таким образом, поисковые системы не индексируют одну и ту же страницу несколько раз, что может привести к тому, что она будет рассматриваться как дублированный контент или спам, и даже к удалению или понижению вашей страницы со страниц результатов поисковой системы.
При добавлении такого тега вы предоставляете один и тот же контент для обоих доменов, сообщая поисковым системам, какой URL-адрес является каноническим. В предыдущем примере http://www.example.org/whaddup будет обслуживать тот же контент, что и http://example.org/whaddup , но с дополнительным элементом в заголовке:
org/whaddup" rel="canonical" />
В отличие от предыдущего случая, история браузера будет рассматривать URL-адреса без www и с www как независимые записи.
С помощью этих методов вы можете настроить свой сервер для правильного ответа как для доменов с префиксом www, так и для доменов без префикса www. Это хороший совет, так как вы не можете предсказать, какой URL-адрес пользователи будут вводить в строке URL-адреса своего браузера. Это вопрос выбора типа, который вы хотите использовать в качестве своего канонического местоположения, а затем перенаправления на него другого типа.
Это очень субъективная тема — ее можно счесть проблемой отказа от велосипедов. Если вы хотите читать глубже, пожалуйста, посмотрите некоторые из многих статей по этому вопросу.
- Статистика того, что люди вводят в строку URL (2011)
Последнее изменение: , участниками MDN
Настройка перенаправления URL-адресов с гибким шаблоном
Перенаправление URL-адресов с гибким шаблоном позволяет перенаправлять один URL-адрес на несколько других с помощью одного сопоставления.
Например, вы можете перенаправить весь блог без необходимости создавать сопоставления URL-адресов для каждой записи в блоге.
Создать гибкий шаблон перенаправления URL
- В своей учетной записи HubSpot щелкните значок настроек настроек на главной панели навигации.
- В меню левой боковой панели нажмите Веб-сайт > Домены и URL-адреса .
- Перейдите на вкладку URL Redirects .
- В правом верхнем углу нажмите Добавить URL .
- На правой панели выберите тип переадресации Гибкая .
- В поле Исходный URL введите гибкий шаблон URL для страниц, с которых вы будете перенаправляться.
- В поле Redirect to введите URL гибкого шаблона для страниц, на которые вы будете перенаправляться.
- Щелкните Дополнительные параметры , чтобы настроить перенаправление или добавить примечание.

- Нажмите Добавить перенаправление URL .
Примеры гибкого шаблона URL-переадресации
Существует несколько способов настройки гибкого шаблона перенаправления URL-адресов:
- Перенаправление всего конца URL-адреса:
- Установка отдельных компонентов:
- Компонент — это каждая часть URL после косой черты (/). Например, в URL www.example.com/2022/03/26/my-first-post есть четыре компонента: 2022 , 03 , 26 и my-first-post . ).
- При настройке перенаправления каждый компонент определяется двоеточием (:), за которым следует имя этой переменной в исходном URL-адресе. Например, URL-адрес http://www.example.com/2022/03/26/my-first-post будет настроен как http://www.example.


(.*)$ http://site.ru/ [L,R=301]
Это сделает ваш сайт более последовательным для ваших пользователей и поисковых систем. Это включает в себя всегда связывание с выбранным доменом (что не должно быть сложным, если вы используете относительные URL-адреса на своем веб-сайте) и всегда обмен ссылками (по электронной почте / социальным сетям и т. д.) на один и тот же домен.
org/whatddup 