Как сделать ЧПУ
14 сообщений
#17 лет назад
Помогите настроить ЧПУ(ЧеловекоПростойУрл...так вроде)в жизни это Мод_реврайт....Спасибо...
Желательно по порядку.=)
36 сообщений
#17 лет назад
ЧеловекоПонятныйУрлВ инете целая куча статей, и на форумах (phpclub.ru, sql.ru) это обсуждалось не раз и не два...
441 сообщение
#17 лет назад
1. С помощью связки Apache+mod_rewrite перекидываешь все запросы на твой основной скрипт (это получается шаблон Front Controller). Я это делаю, добавляя в .htaccess вот этот кусок:<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(+)$ /$1/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)/(.+)()$ /$1/$2$3/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php
</IfModule>
Этот пример обрабатывает URL'ы вида /aaa/bbb/ccc/sssss/, на URL'ах типа /aaaaa/bbb/ccc/sss.html может запнуться, не проверял и не хочу
2. В index.php смотришь переменную $_SERVER (это если работаешь с PHP) - это будет URL, который ввел посетитель, например, /papers/transducers/vw/.
3. Дальше в соответствии с логикой твоей системы парсишь URL, определяешь, что нужно отдать пользователю и отдаешь
Какая может быть логика разбора:
1. Искать URL в базе данных. Найден - отдавать контент, не найден - посылать 404
2. Сравнивать URL с шаблоном, лежашем в конфиге (например, с регэкспом типа ^/shop/perfume/(designer)/(?: (\d+)/){0,2}?$). Если совпадение есть - пытаться выдрать контент из базы и отдать пользователю. Нет контента или регеэксп не дал совпадений - 404
Можно придумать еще кучу вариантов, но эти два наиболее простые и удобные (в общем случае).
Надеюсь, идею донес в общих чертах
1 сообщение
#17 лет назад
Цитата ("sukebe"):
Надеюсь, идею донес в общих чертах
Мда, толково описал, спасибо, я кучу всего прочитал пока догнал, может ты начинай статьи писать типа кратенькие
14 сообщений
#17 лет назад
Цитата ("SamDark"):Написал как-то статейку: ]http://rmc.net.ru/article/programming/goodurl/
Спасибо.Просто и со вкусом.