Налаштування mod_rewrite на веб-сервері Apache у CentOS 7
Пропозиція від 8host.com

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 та вставте у файл: