Редирект домену з www на без www на Apache у CentOS 7

Пропозиція від 8host.com

редирект

Цей посібник покаже, як настроїти URL-адресу з префіксом www на URL без префікса на веб-сервері Apache у системі CentOS 7 (наприклад, з www.example.com на example.com).

Вимоги

Крім того, потрібно заздалегідь встановити Apache. Корисні статті щодо встановлення та налаштування цього веб-сервера можна знайти у спеціальному розділі даного сайту.

Також потрібно мати можливість додавати записи DNS.

Налаштування DNS-запису

Щоб налаштувати редирект із www.example.com на example.com (або навпаки), потрібно створити запис для кожного імені.

Відкрийте панель керування DNS.

Тепер сервер доступний за двома доменами: з префіксом www і без нього. Можна розпочинати налаштування редиректу.

Налаштування редиректу Apache

У системі CentOS 7 модуль Rewrite увімкнено за замовчуванням. Якщо ж у вашому випадку це з якоїсь причини не так, внесіть наступний рядок до розділу modules конфігурацій 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), знайдіть блок коду . У ньому змініть AllowOverride None на AllowOverride All:

Збережіть та закрийте файл.

Перезапустіть Apache, щоб оновити налаштування:

sudo systemctl restart httpd

ТеперApache налаштований для читання .htaccess, що знаходяться у будь-якому підкаталозі каталогу /var/www/html. Тепер додайте правила Rewrite.

Налаштування модуля Rewrite

Тепер можна налаштувати модуль Rewrite за допомогою увімкненого файлу .htaccess .

Перейдіть до DocumentRoot:

Потім відкрийте .htaccess для редагування:

sudo vi .htaccess

Звичайно, цей файл буде порожній (якщо він не був створений попередньо). Виберіть напрямок редиректу та дотримуйтесь відповідного розділу.

1: Редирект з www на без www

Щоб налаштувати редирект користувачів з домену з префіксом www на домен без нього, внесіть наступний код:

RewriteEngine On RewriteBase / RewriteCond % ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Збережіть та закрийте файл. Зміни негайно набудуть чинності. Зверніть увагу: під час використання HTTPS необхідно замінити http у рядку RewriteRule на https.

Потім використовуйте наступну команду curl, щоб переконатися, що редирект налаштований правильно (не забудьте вказати свій домен):

curl -I http://www.example.com

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

2: Редирект домену без www на домен з www

RewriteEngine On RewriteBase / RewriteCond % !^www\. [NC] RewriteRule ^(.*)$ http://www.%/$1 [R=301,L]

Збережіть та закрийте файл, після чого зміни будуть активовані. При використанні HTTPS не забудьте замінити http у рядку RewriteRule на https.

Потім використовуйте наступну команду curl, щоб переконатися, що редирект налаштований правильно (не забудьте вказати свій домен):

curl -Ihttp://example.com

На екрані з'явиться повідомлення, яке показує, що точкою редиректу є домен із префіксом:

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

Звичайно, необхідно також перевірити редирект у браузері.

Висновок

Як бачите, налаштування редиректу на сервері Apache є досить простим процесом. Тепер ваш сайт доступний за двома доменами: з префіксом і без нього.