Или вот допустим ЧПУ. Человекопонятные URL. Есть URL: www.site.com/news.php?action=archive&year=2009&month=2.
Он человеконепонятный и человеконенавистнеческий.
А вот так понятный: www.site.com/news/archive/2009/02/. Всем видно — это архив новостей за февраль 2009. Более того, если стереть 02, получим архив за весь 2009, сотрём его, получим полный архив, сотрём и archive — окажемся в корне раздела новостей, добавим в конце 27, получим список новостей за день.
Не будем разбираться в том, всегда ли палочки понятнее вопросиков, кто будет стирать что-то в адресной строке и кто туда вообще смотрит. Просто примем за факт, что это последний писк моды.
Для многих известных форумов (phpBB, smf) есть плагины реализующие ЧПУ. Форумы старенькие, урлы у них страшненькие, поэтому с адаптацией приходится повозиться.
Реализуют обычно через mod_rewrite. То есть, есть вот изначальный набор страниц со старыми адресами, а есть те же страницы с новыми человекопонятными. И чтобы старые страницы откликались на новые адреса нужно их всех корректно за модрерайтить. Различных адресов много и все с кучей GET-параметров. Поэтому в .htaccess образуется ограмадное месиво из регулярок. С регуляркой и одной то не всегда легко разобраться, а с двадцатью килобайтами их вообще смерти подобно.
И вот те, кто таки сумел перевести какой-нибудь форум на ЧПУ становятся Великими Гуру Регулярок. Потом приходят благодарные потомки и на проделанной работе начинают учиться, как же всё таки делать ЧПУ.
Отлично! И вот потом все эти люди начинают делать свои проекты. И конечно же с ЧПУ, куда без него!
И что большинство из них делает? Делает всё тоже самое. Страницы с GET-параметрами в две строки и громоздкий htaccess преобразующий ссылки вида /news/archive/2009/20/ в index.php?module=news&actiov=archive&year=2009&month=2.
Нахуя?! Зачем? Вы же не костыли выстругиваете, чтобы какое-то здоровенное старьё на новые веянья натянуть. С нуля же делаете.
— А что делать? — спрашивают некоторые, — нам же нужны параметры. Откуда нам их ещё взять?
Но ведь эти параметры не с неба свалились. Вы их только что модрерайтом на основании URL генерировали. Вот этот URL и есть ваш параметр. Выделили несколько папочек под картинки и стили, а все остальные запросы валите в один сценарий.
RewriteEngine on RewriteCond %{REQUEST_URI} ^/(i|css|js)/.* RewriteRule . - [L] RewriteRule (.*) index.php [L] |
В index.php взяли /news/archive/2009/20/ и поделили по слешу на компоненты. Глядь — первый компонент news и передаём управление модулю новостей (или как там у вас устроено). Уже модуль смотрит — следующий компонент archive, значит архив выводить надо. Осталось ещё два компонента, значит это год и месяц.
- Вместо того чтобы держать в голове две системы именования, держим одну, человекопонятную.
- Разруливание всех запросов идёт за один проход, а не за два (mod_rewrite + потом всё равно параметры разбирать).
- Обработка параметров не свалена в один огромный файл, а ведётся по частям, каждая в своём модуле.
- И ведётся она нормальным программным кодом, который всяко удобнее и понятнее апачевских директив.
Все верно сказано, так и надо делать!
adw0rd, 27.02.2009, 15:13
Я рад, что ты со мной :)
vasa_c, 27.02.2009, 15:33
«/news/archive/2009/20/» уууууу 20 месяц?)))
adw0rd, 27.02.2009, 23:02
Решил перечитать ещё раз, предельно внимательно? :)
vasa_c, 28.02.2009, 13:36
Ога +1
Этот подход+goDB+фраза»Че за х*ня?» это самые важные вещи, которые я у тебя с… т.е. До чего я дошел своим умом, когда работали вместе над москварой конечно. :)
dAllonE, 3.03.2009, 15:50
Спасибо, Далоша, твоя поддержка много значит для меня :)
vasa_c, 3.03.2009, 18:40
У тебя камменты сливаются… сделай чередование фоновых цветов или бордером раздели…
adw0rd, 3.03.2009, 19:03
Благодарю за статью. Удачи Вам!
Компьютерщик, 11.04.2009, 5:51
там с артедоо раздули за програмеро понятный ЧПУ без ебаных 20 кб текста в хтаккессе. можно юзать в принципе, к тому же это обратимая вещь получилась, так что имеет право на жизнь
phpdude, 4.06.2009, 13:56
>там с артедоо раздули
где там? : )
vasa_c, 4.06.2009, 15:59
http://pyha.ru/forum/topic/2392.0
phpdude, 18.10.2009, 14:33
Хорошая информация, для проектировщиков сайтов то что нужно
Андрей, 20.04.2011, 20:36
Спасибо за информацию, надеюсь не пригодиться…
Как сюда попала не помню, кажется оттуда http://www.php.ru/forum/viewtopic.php?t=790
пытаюсь столкнуть вот эту лабуду http://www.plati.ru/asp/pay.asp?idd=1168117 только с сайта, ибо на плати.ру такое никому не интересно =) ботаны себе сами всё напишут
и где то я видела уже ваш ник …
Vasiliya, 25.07.2011, 22:18