Чпу для сайту на 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).

Схожі статті