Page 1 of 1

PHP маршрутизатор(роутер) вместо десятков реврайтов.

Posted: Tue Mar 02, 2021 10:07 am
by btr
Добрый день.
Почему бы не сделать подобное?
К примеру в конфиге nginx добавляем try_files $uri /route.php?$args;
а в route.php уже обрабатываем все, в зависимости от того какие пути (для категорий, тумб, поиска и тд) прописаны в настройках.
Это бы облегчило работу для тех кто не шарит в реврайтах, а так же сократило время настройки скрипта(пути нужно прописать только в настройках скрипта).

Re: PHP маршрутизатор(роутер) вместо десятков реврайтов.

Posted: Tue Mar 02, 2021 10:41 am
by admin
Приветствую!

да, идея на поверхности

вопрос в том, что

1. если не в реврайтах то в пхп надо прописывать = надо шарить в пхп / регэкспах
2. любой файл которого нет - будет дергать скрипт = больше нагрузки

в чем смысл тогда выносить в пхп если какие-то спец знания для роутинга все равно надо, а отсутствующий например файл иконки - будет дергать скрипт?

Re: PHP маршрутизатор(роутер) вместо десятков реврайтов.

Posted: Tue Mar 02, 2021 12:06 pm
by btr
Настраивать можно и в админке, знание регэкспа не обязательно, шаблонизатор можно использовать.
к примеру что то типа такого:
/$name_cat/$num_cat/ - для категорий
/$name_tag/$num_tag/ - для тегов
/$name_content/$content.html - для страницы с контентом (в нашем случае страницы с видео).
и тд.
файл иконки можно и в исключения добавить.

Re: PHP маршрутизатор(роутер) вместо десятков реврайтов.

Posted: Tue Mar 02, 2021 6:02 pm
by admin
откуда знать что "/$name_cat/$num_cat/ " это для категорий например?
как в этой ситуации например прописать /category/list/ - хочу что б было &force_template=category_list ?



"файл иконки можно и в исключения добавить."

исключения где? в скрипте?
так любой пропущенный файл, тумба, что угодно , любой косяк в дизайне = нагрузка на скрипт, когда мы поднимаем весь фреймворк что б разобраться надо ли на это что-то отвечать
в текущей ситуации у нас 404 выдает nginx и все , никакой нагрузки

Re: PHP маршрутизатор(роутер) вместо десятков реврайтов.

Posted: Wed Mar 03, 2021 1:37 am
by btr
"откуда знать что "/$name_cat/$num_cat/ " это для категорий например?"
шаблон я привел как пример, он может выглядеть и по другому, задается переменная в админке для поиска к примеру $search_cat,
в роутере что то типа такого разбирает нужный url:
if(preg_match('/^\/'.$search_cat.'\/.+\/.*$/',$url) == TRUE)
{
include('search.php');
}
"как в этой ситуации например прописать /category/list/ - хочу что б было &force_template=category_list ?"
для листинга категорий можно задать в админке отдельную переменную, в которой и пропишется путь.

по поводу нагрузки, я не силен в кодинге, но на сколько знаю, основная нагрузка идет от запросов к базе, думаете если на входе будет ~5-10 регулярок preg_match, это сильно нагрузит скрипт?
И да, в маршрутизаторе не нужно же "поднимать весь фреймворк", достаточно проверить совпадение нужного нам url, если совпал инклудим нужную нам часть, если не одно условие не совпало, отдаем тупо 404.

Re: PHP маршрутизатор(роутер) вместо десятков реврайтов.

Posted: Wed Mar 03, 2021 6:03 am
by admin
так вы таким образом сразу ограничиваете количество урлов например
инедкс, категория, страница контента, ну может лист категорий

например если я делаю магазин и мне надо лист товаров на скидке , которые я помечу таким в кастом вар каким-то образом - то это уже в вашем варианте никак не сделать вообще

поднимать фесь фрем ворк - да, это значит загрузить либы скрипта, это занимает какое-то время и сильно больше чем проверяет 404 апач

и самое главное - я так и не понял, зачем уходить от реврайтов? что они не дают сделать, что можно сделать на роутере?

Re: PHP маршрутизатор(роутер) вместо десятков реврайтов.

Posted: Wed Mar 03, 2021 6:42 am
by btr
У меня доводы кончились.
Нет так нет. )

Re: PHP маршрутизатор(роутер) вместо десятков реврайтов.

Posted: Wed Mar 03, 2021 7:02 am
by admin
Думаю намного проще напистаь админу "пропишите мне такой то реврайт" чем устраивать танцы с бубном пытаясь уложить все варианты реврайта в какую-то админку)