Чпу для сайту на php
Ну так от і з тих самих пір я хотів створити свій матеріал про цю тему, який нарешті розкриє таємниці створення простого нехитрого ЧПУ без надмірностей, строго і ефективно. Будемо створювати ЧПУ з використанням .htaccess і безпосередньо mod_rewrite. але все по порядку.
Тож почнемо. Для прикладу вигадаємо невелику ситуацію:
Головна роль акредитуючої ЧПУ віддається файлу .htaccess саме він робить всю роботу. Отже чтоже має бути в файлі .htaccess:
RewriteEngine On
RewriteRule ^ (. *) / (. *) $ Index.php? Cat = $ 1art = $ 2 [L]
От і все. Тепер все що нам слід зробити це "ловити" і використовувати нашим index.php дві змінні cat і art.
Увага якщо оброблювачем php ви використовуєте cgi-bin то замість файлу .htaccess у вас повинен бути htaccess.txt
index.php - основний файл
htaccess.txt - файл для Cgi-bin обробника
.htaccess - файл для Apache обробника
Розпакуйте вміст архіву до себе на сервер, і спробуйте запит наприклад <ваш_сервер>/ Trololo / 512 або будь-який інший, <ваш_сервер> - як ви зрозуміли писати не варто, це я вказав так місце куди ви розпакуєте архів і звідки будете запускати файл.
Для тих, хто не зрозумів що і як.
Вся суть даного ЧПУ полягає в htaccess файлі, а що він саме робить?
RewriteEngine On
RewriteRule ^ (. *) / (. *) $ Index.php? Cat = $ 1art = $ 2 [L]
і віддає обробникам вужі такого виду:
Показаний в статті приклад можна змінювати як завгодно.
то пишемо в .htaccess:
RewriteEngine On
RewriteRule ^ (. *) / (. *) / (. *) $ Avto.php? Cat = $ 1avto = $ 2model = $ 3 [L]
Або раптом якщо у нас є кілька обробників PHP, то можна для кожного поставити правило в .htaccess:
RewriteEngine On
RewriteRule ^ avto /(.*)$ avto.php? Id = $ 1 [L]
RewriteRule ^ air /(.*)$ forair.php? Id = $ 1 [L]
RewriteRule ^ flot /(.*)$ waterflot.php? Id = $ 1 [L]
З прикладу видно, то все запити починаються з domen.ru/avto/ будуть відправлятися в обробник avto.php, що починаються з domen.ru/air/, в обробник forair.php.
Тепер варто відзначити важливу! перед вашим RewriteRule поставте такий код:
Цей код дозволить вам уникнути направлення на обробник при запиті статичних папок і файлів, фізично зберігаються в папці сайту.
У такому випадку дані сайту будуть викликатися коректно при будь-якому ЧПУ, з будь-якою кількістю слешів. Точно також поступите з усіма підключаються файлами до HTML.
Настав саме час поговорити про другий варіант редиректу через .htaccess. Другий варіант повністю зав'язаний на першому, але представляє собою універсальний редирект з боку htaccess. Складається редирект всього з одного правила:
RewriteRule ^ ([A-Za-z0-9 - /] +) $ /engine.php?query=$1 [L]
І ви після обробки можете виконувати будь-які дії з цими даними.
І можливо стане в нагоді: Для того щоб дізнатися кількість записів в масиві використовуйте count ($ url). для того щоб подивитися значення останнього запису в масиві використовуйте end ($ url).