Блукаючи просторами Інтернету ви бачили безліч різних гіперпосилань, деякі мали різний вигляд, передаючи різні знаки (?, &, ? і т. д.
Якщо знаків трохи посилання ще має приємний вигляд, але деякі посилання не дуже зрозумілі. Ось наприклад посилання має такий вигляд. http://www.webobzor.net/index.php?mod=stat

Немає нічого складного, але адреса може виглядати і так http://www.webobzor.net/stat Так краще? Так можна передавати не один параметр.

Можливо ви зустрічали подібні посилання на деяких сайтах, напевно ви подумали, що скрипт для кожного файлу створює окрему папку. Так, це варіант, але неправильний. Зовсім не обов’язково робити.

І так як же це зробити, не створюючи окремих каталогів, відповідь зовсім простий, розробники нашого улюбленого сервера Apache придумали модуль mod_rewrite, який нам і допоможе в цьому питанні.

Модуль mod_rewrite

mod_rewrite – це спеціальний модуль для серверів Apache, який був спеціально зроблений для створення сайтів з ЧПУ. Він був написаний у квітні 1996 року і ексклюзивно подарований The Apache Group в липні 1997.

Модуль являє собою бібліотеку розширення для серверів типу Apache. Знаходиться в папці modules, в кореневій папці апача і називається зазвичай mod_rewrite.so (встановлюється окремо). З допомогою mod_rewrite можна всього парою рядків .htaccess зробити зрозумілий для людини url.

Підключення модуля mod_rewrite

Зайдіть в каталог в якому встановлений ваш Web – сервер Apache, відкрийте папку modules, і переконайтеся, що в ній присутній файл mod_rewrite.so.

Файл у нас є тепер перейдіть в каталог conf і відкрийте файл httpd.conf, вам необхідно переконатися, що даний модуль підключений, для цього знайдіть таку рядок

LoadModule rewrite_module modules/mod_rewrite.so

Знайшли? Ні, тоді додайте цей рядок.

Збережіть зміни у файлі httpd.conf і перезавантажте сервер.

Перетворимо гіперпосилання

У каталозі, де у вас виконуються PHP скрипти, створіть файл .htaccess. Запишіть у файл .htaccess такі рядки:

RewriteEngine On
RewriteBase /test
RewriteRule index.php.* — [L]
RewriteRule ^(.*) index.php?id=$1

У рядку RewriteEngine On — ми повідомляємо серверу що хочемо використовувати засоби модуля Rewrite.

Рядок RewriteBase /test – Вказує серверу де шукати файл index.php (чи який у вас за замовчуванням), якщо ви в цьому рядку вкажіть неправильний шлях, то сервер буде завантажувати файл з вказаної папки, а не стій що потрібна вам.

RewriteRule ^(.*) index.php?id=$1 – У цій рядку вказуємо ім’я файлу, і що необхідно трансформувати.

Тепер створюємо файл index.php і пишемо там всього один рядок.

Думаю, з цим все зрозуміло, гіперпосилання, для відкриття файла повинна мати такий вигляд http://localhost/test/page. Природно, файл page.php вже повинен бути створений, і перебувати в каталозі test.

Ось ніби і все, але не тут то було, браузер ні в яку не хоче нам показувати такий необхідний для нас файл 1.php замість цього ми бачимо сторінку з помилкою 404.

У чому ж справа? Для того що б браузер зрозумів що йому прислав сервер необхідно в файл index.php у самий верх додати таку запис.

Ця рядок говорить браузеру: все ОК, успішно сторінка завантажена. Повну інформацію щодо помилок і відповідей сервера, читайте цю статтю Коди відповідей HTTP сервера

Будьте уважні, вам необхідно рядок header(«http/1.0 200 Ok») помістити перед відправкою заголовків, тобто в самому верху, інакше буде помилка.

Єдиним недоліком цього методу є те, що, на вашому сайті може не використовуватися модуль Rewrite і тоді ви будете бачити сторінку з помилкою 500.