Как и обещал - простыми словами.
В связи с тем что на форуме участились вопросы по теме ЧПУ, раскрою немного эту тему.
Начнем с того, что же это такое, но с небольшим отступлением.
1. IPv4
Были времена, когда не было доменных имен.
И все сетевые ресурсы были доступны только по прямому обращению по уникальному IP-адресу.
Но ресурсов становилось все больше и больше.
Такое кол-во IP-адресов было трудно запомнить, неудобно хранить..
И люди придумали доменные имена.
Появились DNS-сервера, хранящие данные к какому IP-адресу относится доменное имя.
DNS-сервис можно сравнить с записной книжкой телефона.
Имя - номер..
Имя - номер..
Имя - номер..
Имя - номер..
Не зачем запоминать IP-адрес. Достаточно запомнить доменное имя.
Это ведь ЧЕЛОВЕЧНО
2. ЧПУ
Ссылки динамических сайтов изначально выглядели примерно так:
http://site[dot]ru/index.php?cat=news&post=12
http://site[dot]ru/cart.php?block=or[dot][dot][dot]mp;product=65545
http://site[dot]ru/articles.php?rubr[dot][dot][dot];page=8#comments
http://site[dot]ru/registration.php?step=2
Потом кто-то задумался, по аналогии с доменными именами: "А не сделать ли и ссылки внутри сайта красивыми и ЧЕЛОВЕЧНЫМИ?"
Задумался и сделал..
Теперь ссылки стали выглядеть красиво, аккуратно и ЧЕЛОВЕЧНО.
http://site[dot]ru/news/12/
http://site[dot]ru/order/65545/
http://site[dot]ru/articles/657/34/page/8/#comments
http://site[dot]ru/registration/2/
Но это был только первый шаг. Ведь вроде бы для пользователя все красиво и понятно.
А как же программист? Сидеть и раскапывать сотни строчек в файле .htaccess?
Ну уж нет! Увольте! Программисту тоже нужна свобода и удобстно!
3. Единая точка входа
Вот тут и начинается рассказ об удобстве для программиста.
Итак, мы хотим прозрачно и понятно для себя самих получать данные из строки запроса и легко их обрабатывать.
Так поехали. Расскажу только один принцип для примера. Самый простой и понятный.
Мы просто ВООБЩЕ ВСЕ что к нам приходит перенаправим в один единственный файл:
.htaccess:
CODE (html):
скопировать код в буфер обмена
скопировать код в буфер обмена
- RewriteEngine on
- RewriteBase /
- RewriteCond %{REQUEST_FILENAME} !-d
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteRule ^(.*) index.php?q=$1 [L]