Добрый день.
Почему бы не сделать подобное?
К примеру в конфиге nginx добавляем try_files $uri /route.php?$args;
а в route.php уже обрабатываем все, в зависимости от того какие пути (для категорий, тумб, поиска и тд) прописаны в настройках.
Это бы облегчило работу для тех кто не шарит в реврайтах, а так же сократило время настройки скрипта(пути нужно прописать только в настройках скрипта).
PHP маршрутизатор(роутер) вместо десятков реврайтов.
Re: PHP маршрутизатор(роутер) вместо десятков реврайтов.
Приветствую!
да, идея на поверхности
вопрос в том, что
1. если не в реврайтах то в пхп надо прописывать = надо шарить в пхп / регэкспах
2. любой файл которого нет - будет дергать скрипт = больше нагрузки
в чем смысл тогда выносить в пхп если какие-то спец знания для роутинга все равно надо, а отсутствующий например файл иконки - будет дергать скрипт?
да, идея на поверхности
вопрос в том, что
1. если не в реврайтах то в пхп надо прописывать = надо шарить в пхп / регэкспах
2. любой файл которого нет - будет дергать скрипт = больше нагрузки
в чем смысл тогда выносить в пхп если какие-то спец знания для роутинга все равно надо, а отсутствующий например файл иконки - будет дергать скрипт?
Don't forget to run script update
Re: PHP маршрутизатор(роутер) вместо десятков реврайтов.
Настраивать можно и в админке, знание регэкспа не обязательно, шаблонизатор можно использовать.
к примеру что то типа такого:
/$name_cat/$num_cat/ - для категорий
/$name_tag/$num_tag/ - для тегов
/$name_content/$content.html - для страницы с контентом (в нашем случае страницы с видео).
и тд.
файл иконки можно и в исключения добавить.
к примеру что то типа такого:
/$name_cat/$num_cat/ - для категорий
/$name_tag/$num_tag/ - для тегов
/$name_content/$content.html - для страницы с контентом (в нашем случае страницы с видео).
и тд.
файл иконки можно и в исключения добавить.
Re: PHP маршрутизатор(роутер) вместо десятков реврайтов.
откуда знать что "/$name_cat/$num_cat/ " это для категорий например?
как в этой ситуации например прописать /category/list/ - хочу что б было &force_template=category_list ?
"файл иконки можно и в исключения добавить."
исключения где? в скрипте?
так любой пропущенный файл, тумба, что угодно , любой косяк в дизайне = нагрузка на скрипт, когда мы поднимаем весь фреймворк что б разобраться надо ли на это что-то отвечать
в текущей ситуации у нас 404 выдает nginx и все , никакой нагрузки
как в этой ситуации например прописать /category/list/ - хочу что б было &force_template=category_list ?
"файл иконки можно и в исключения добавить."
исключения где? в скрипте?
так любой пропущенный файл, тумба, что угодно , любой косяк в дизайне = нагрузка на скрипт, когда мы поднимаем весь фреймворк что б разобраться надо ли на это что-то отвечать
в текущей ситуации у нас 404 выдает nginx и все , никакой нагрузки
Don't forget to run script update
Re: PHP маршрутизатор(роутер) вместо десятков реврайтов.
"откуда знать что "/$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.
шаблон я привел как пример, он может выглядеть и по другому, задается переменная в админке для поиска к примеру $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 маршрутизатор(роутер) вместо десятков реврайтов.
так вы таким образом сразу ограничиваете количество урлов например
инедкс, категория, страница контента, ну может лист категорий
например если я делаю магазин и мне надо лист товаров на скидке , которые я помечу таким в кастом вар каким-то образом - то это уже в вашем варианте никак не сделать вообще
поднимать фесь фрем ворк - да, это значит загрузить либы скрипта, это занимает какое-то время и сильно больше чем проверяет 404 апач
и самое главное - я так и не понял, зачем уходить от реврайтов? что они не дают сделать, что можно сделать на роутере?
инедкс, категория, страница контента, ну может лист категорий
например если я делаю магазин и мне надо лист товаров на скидке , которые я помечу таким в кастом вар каким-то образом - то это уже в вашем варианте никак не сделать вообще
поднимать фесь фрем ворк - да, это значит загрузить либы скрипта, это занимает какое-то время и сильно больше чем проверяет 404 апач
и самое главное - я так и не понял, зачем уходить от реврайтов? что они не дают сделать, что можно сделать на роутере?
Don't forget to run script update
Re: PHP маршрутизатор(роутер) вместо десятков реврайтов.
У меня доводы кончились.
Нет так нет. )
Нет так нет. )
Re: PHP маршрутизатор(роутер) вместо десятков реврайтов.
Думаю намного проще напистаь админу "пропишите мне такой то реврайт" чем устраивать танцы с бубном пытаясь уложить все варианты реврайта в какую-то админку)
Don't forget to run script update