Налаштування mod_rewrite на веб-сервері Apache у CentOS 7

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

apache

Apache – це модульний веб-сервер (тобто він дозволяє налаштовувати функції шляхом увімкнення та відключення модулів). Це надає адміністраторам можливість максимально точно налаштовувати налаштування веб-сервера під вимоги додатків.

Цей посібник допоможе встановити Apache на сервер CentOS 7 і налаштувати підтримку mod_rewrite.

Вимоги

  • Сервер CentOS 7
  • Користувач із доступом до sudo (подробиці можна знайти в посібнику Створення користувача sudo у CentOS).

1: Встановлення Apache

Apache можна інсталювати за допомогою пакетного менеджера yum.

sudo yum install httpd

Команда запросить підтвердження:

Щоб продовжити інсталяцію, введіть Y та натисніть клавішу Enter.

Запустіть демон Apache (це автономний процес, який створює пул дочірніх процесів або потоків для обробки запитів):

sudo systemctl start httpd

Щоб переконатися, що запуск Apache пройшов успішно, введіть:

sudo systemctl status httpd . . . systemd[1]: Starting The Apache HTTP Server. systemd[1]: Started The Apache HTTP Server .

Сервер Apache успішно встановлено. Тепер слід зосередити увагу на модулях.

2: Модуль mod_rewrite

CentOS 7 модуль mod_rewrite підтримується за замовчуванням. Перевірте, чи це так. Використовуйте httpd з прапором –M, щоб вивести список включених модулів:

httpd -M . . . remoteip_module (shared) reqtimeout_module (shared) rewrite_module (shared) setenvif_module (shared) slotmem_plain_module (shared) . . .

Якщо у списку немає модуля rewrite_module, увімкніть його вручну.Відредагуйте 00-base.conf.

sudo vi /etc/httpd/conf.modules.d/00-base.conf

# # Цей файл завантажується в модулі, що містяться з Apache HTTP # Server itself. # . . . LoadModule rewrite_module modules/mod_rewrite.so . . .

Натисніть Esc, щоб вийти з режиму вставки. Натисніть :x та Enter, щоб зберегти та закрити файл.

Оновіть налаштування веб-сервера:

sudo systemctl restart httpd

Тепер можна приступати до створення файлу .htaccess.

3: Створення файлу .htaccess

Файл .htaccess визначає індивідуальні директиви Apache (включно з RewriteRule) для кожного окремого домену.

Примітка : У Linux із символу точки починаються імена прихованих файлів.

Спочатку потрібно увімкнути підтримку файлів .htaccess. Для цього відредагуйте директиву AllowOverride:

sudo vi /etc/httpd/conf/httpd.conf

Знайдіть у цьому файлі розділ. Він містить AllowOverride. Змініть значення None на All.

Збережіть та закрийте файл. Перезапустіть Apache:

sudo systemctl restart httpd

Створіть файл .htaccess у стандартному каталозі document root (/var/www/html):

sudo vi /var/www/html/.htaccess

Додайте на початок файлу наступний рядок, щоб активувати RewriteEngine. Так Apache зможе обробляти правила перезапису.

Тепер на сервері є файл .htaccess, який дозволяє встановити правила перезапису URL. Перш ніж приступити до написання цих правил, потрібно ознайомитись із синтаксисом mod_rewrite.

4: Синтаксис RewriteRule

RewriteRule Pattern Substitution [Flags]

  • RewriteRule: власне директива.
  • Pattern: бібліотека PCRE (Perl Compatible Regular Expression). Більше інформації про це можна знайти тут.
  • Substitution: куди відправити запит.
  • [Flags]: опціональні параметри, що змінюють поведінку правила. Список доступних прапорів можна знайти у документації Apache.

Директива RewriteRule є дуже важливою для mod_rewrite.

5: Синтаксис RewriteCond

Директива RewriteCond дозволяє додавати умови в правило перезапису. Умова перезапису складається з наступних компонентів:

RewriteCond TestString Condition [Flags]

  • RewriteCond: Директива.
  • TestString: рядок, який потрібно перевірити.
  • Condition: шаблон, якому має відповідати рядок.
  • [Flags]: опційні параметри.

Завдяки директиві RewriteCond Apache виконує перезапис тільки в тому випадку, якщо певна умова є істинною.

6: Створення тестового файлу

Створіть просте правило, яке дозволить користувачам отримати доступ до сторінки about.html без розширення (.html). Для початку створіть файл about.html у каталозі document root:

sudo vi /var/www/html/about.html

Скопіюйте наступний код HTML та вставте у файл: