Как Перенаправить www в Non-www с Apache на CentOS 7

Вступление

Если у вас есть веб-сайт или приложение, запущенное и работающее за доменом, часто желательно, чтобы ваши пользователи также имели к нему доступ через простое доменное имя and субдомен * www *. То есть они должны иметь возможность посещать ваш домен с префиксом «http: // www. [Www.]» Или без него, например. + example.com + или + www.example.com + в веб-браузере и будут представлены с одинаковым содержанием. Несмотря на то, что существует множество способов его настройки, наилучшим решением с точки зрения согласованности и SEO является выбор домена, который вы предпочитаете, обычный или www, и перенаправление другого на предпочитаемый домен. Этот тип перенаправления называется * Permanent Redirect * или «301 redirect», и его можно легко настроить, правильно настроив записи ресурсов DNS и программное обеспечение веб-сервера.

Из этого туториала Вы узнаете, как перенаправить URL-адрес www на сайт без www, например + www.example.com + to + example.com +, с Apache на CentOS 7. Мы также покажем вам, как перенаправить в другом направлении, с URL-адреса без www на http: // www [www]. Версия этого руководства для Ubuntu 14.04 доступна по адресу here. .

Если вы хотите выполнить этот тип перенаправления с Nginx в качестве веб-сервера, вам следует следовать этому руководству: https://www.digitalocean.com/community/tutorials/how-to-redirect-www-to-non-www -with-nginx-on-centos-7 [Как перенаправить www в не-www с Nginx в CentOS 7].

Предпосылки

В этом руководстве предполагается, что у вас есть привилегии суперпользователя, т.е. + sudo + или root на сервере под управлением Apache. Если у вас его еще нет, следуйте этому руководству: Initial Server Setup на CentOS 7.

Предполагается, что у вас установлен Apache (httpd). Если у вас этого еще нет, есть несколько учебных материалов по этому вопросу в теге Apache.

Вы должны иметь возможность добавлять записи в DNS, который управляет вашим доменом. Если у вас еще нет домена, вы можете приобрести его у регистратора доменов и управлять им с помощью DNS-сервера или https://www.digitalocean.com/community/tutorials/how-to-point-to-digitalocean-. регистраторы имен из общего домена [DNS DigitalOcean]. В этом руководстве мы будем использовать DigitalOcean DNS для создания необходимых записей.

Давайте начнем с настройки ваших записей DNS.

Настроить записи DNS

Чтобы настроить желаемое перенаправление, с «+ www.example.com » на « example.com +» или наоборот, вы должны иметь запись * A * для каждого имени.

Откройте все, что вы используете для управления DNS. В нашем примере мы будем использовать DigitalOcean DNS.

Если запись домена (также известная как зона) еще не существует, создайте ее сейчас. * Hostname * должен быть вашим доменом, например + example.com +, и IP-адрес должен быть установлен на публичный IP-адрес вашего сервера Apache. Это автоматически создаст запись A, которая указывает ваш домен на указанный вами IP-адрес. Если вы используете другую систему для управления доменом, возможно, вам придется добавить это вручную.

Затем добавьте еще одну запись A с «www» в качестве имени хоста (или «http://www.example.com [www.example.com]», если частичный поддомен не работает) и укажите тот же IP-адрес.

Когда вы создали обе записи, они должны выглядеть примерно так:

изображение: https: //assets.digitalocean.com/articles/redirect/dns_a_records.png [обязательные записи A]

Теперь ваш сервер должен быть доступен через домен www и не www, но нам все еще нужно настроить перенаправление. Мы сделаем это сейчас.

Включить Apache Rewrite Module

Чтобы выполнить перенаправление 301, мы будем использовать модуль Apache * mod_rewrite * или Rewrite. Это обеспечит доступ ваших пользователей к вашему сайту с префиксом * www. * Или без него и будет перенаправлен на тот домен, который вы предпочитаете.

Модуль перезаписи в CentOS 7 включен по умолчанию. Если он по какой-то причине не включен, обязательно добавьте эту строку в раздел модулей вашей конфигурации Apache (который по умолчанию находится в + / etc / httpd / conf.modules.d / 00-base.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 + `:

Добавить в конфигурацию Apache

<Directory >
...
   AllowOverride
...
</Directory>

Сохранить и выйти.

Теперь перезапустите Apache, чтобы изменения вступили в силу:

sudo systemctl restart httpd

Теперь Apache настроен на чтение файла + .htaccess, расположенного в любом месте в каталоге` + / var / www / html`. Давайте добавим наши правила переписать сейчас.

Настроить модуль перезаписи

Как мы упоминали ранее, мы настроим модуль Rewrite, используя файл + .htaccess +.

Измените каталоги на ваш Document Root, в нашем случае, + / var / www / html:

cd /var/www/html

Теперь откройте + .htaccess + для редактирования:

sudo vi .htaccess

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

Вариант 1: Перенаправить www на не-www

Если вы хотите перенаправить пользователей с www на обычный домен без www, вставьте эту конфигурацию:

htaccess - www to non-www
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Сохранить и выйти. Изменения должны вступить в силу немедленно. Обратите внимание, что если вы используете HTTPS, вы должны обновить «http» в строке «+ RewriteRule +» на «https».

Используйте эту команду curl, чтобы убедиться, что домен без www перенаправляет на домен www (замените выделенную часть своим фактическим доменом):

curl -I http://www.

Вы должны получить ответ «+301 Moved Permanently +», который показывает местоположение перенаправления без www, например:

Output:HTTP/1.1 301 Moved Permanently
Date: Mon, 04 May 2015 16:04:56 GMT
Server: Apache/2.4.6 (CentOS)
Location: http:///
Content-Type: text/html; charset=iso-8859-1

Конечно, вы должны получить доступ к своему домену в веб-браузере (www и не www), чтобы быть уверенным.

Вариант 2: Перенаправление без www на www

Если вы хотите перенаправить пользователей из обычного домена без www в домен www, вставьте эту конфигурацию:

htaccess - non-www to www
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

Сохранить и выйти. изменения должны вступить в силу немедленно. Обратите внимание, что если вы используете HTTPS, вы должны обновить «http» в строке «+ RewriteRule +» на «https».

Используйте эту команду curl, чтобы убедиться, что домен без www перенаправляет на домен www (замените выделенную часть своим фактическим доменом):

curl -I http://

Вы должны получить ответ «+301 Moved Permanently +», который показывает местоположение перенаправления www, например:

Output:HTTP/1.1 301 Moved Permanently
Date: Mon, 04 May 2015 16:05:26 GMT
Server: Apache/2.4.6 (CentOS)
Location: http://www./
Content-Type: text/html; charset=iso-8859-1

Конечно, вы должны получить доступ к своему домену в веб-браузере (www и не www), чтобы быть уверенным.

Заключение

Это оно! Теперь ваше перенаправление Apache настроено правильно, и ваши пользователи смогут получить доступ к вашему веб-серверу через ваш домен не из www и www.

Если вы хотите больше узнать о * mod_rewrite *, функции Apache, которую мы использовали для реализации перенаправления, не стесняйтесь читать этот учебник: https://www.digitalocean.com/community/tutorials/how-to-set- up-mod_rewrite [Как настроить Mod_Rewrite].

Related