Как перенаправить www в не-www с Apache на Ubuntu 14.04

Вступление

Если у вас есть веб-сайт или приложение, запущенное и работающее за доменом, часто желательно, чтобы ваши пользователи также имели к нему доступ через простое доменное имя 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 на Ubuntu 14.04. Мы также покажем вам, как перенаправить в другом направлении, с URL-адреса без www на http: // www [www]. Версия этого руководства для CentOS 7 доступна по адресу here.

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

Предпосылки

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

Предполагается, что у вас установлен Apache. Если у вас этого еще нет, есть несколько учебных материалов по этому вопросу в теге 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, но нам все еще нужно настроить перенаправление. Мы сделаем это сейчас.

Включить модуль перезаписи

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

Сначала включите модуль mod_rewrite с помощью этой команды:

sudo a2enmod rewrite

С включенным модулем Rewrite мы можем настроить Apache с правилами перенаправления, используя файлы + .htaccess +.

Включить .htaccess файлы

Откройте файл конфигурации Apache для редактирования. В Ubuntu файл конфигурации по умолчанию находится по адресу + / etc / apache2 / sites-enabled / 000-default.conf +, поэтому мы будем использовать его в нашем примере:

sudo vi /etc/apache2/sites-enabled/000-default.conf

Найдите DocumentRoot вашего сайта и запишите его. По умолчанию это + / var / www / html +, поэтому мы будем использовать это в нашем примере конфигурации.

Добавьте следующую директиву Directory в конфигурацию и обязательно замените DocumentRoot для выделенной части:

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

<Directory >
   Options Indexes FollowSymLinks MultiViews
   AllowOverride All
   Order allow,deny
   allow from all
</Directory>

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

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

sudo service apache2 restart

Теперь 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: Fri, 01 May 2015 21:18:33 GMT
Server: Apache/2.4.7 (Ubuntu)
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: Fri, 01 May 2015 21:18:33 GMT
Server: Apache/2.4.7 (Ubuntu)
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