обработка ЧПУ

dub

Новичок
обработка ЧПУ

Есть сайт с урлами вида ?param1=n&param2=m. Прикрутил модреврайт теперь /n/m/. А теперь вот бьюсь над тем как сделать(вернее наиболее правильно сделать) так чтобы принимались и старые урлы, и новые(ссылки все же остались и на сайт и внутренняя перелинковка старая тоже), а также определялись значения этих вот /n/m/, потому что в одном случае это /рубрика/статья в другом это /магазин/товар. хочется сделать метод которому можно отдать урлу а он бы ее разобрал и выбрал нужную информацию сформировав переменные для дальнейшей работы.... может есть идеи?
 

hermit_refined

Отшельник
Да вот я тоже не понимаю, чего у всех и у вас, в том числе, мир клином сошёлся на этом реврайт. Ладно ещё, когда речь идёт о каком-то простом преобразовании, но все хотят-то чего-нибудь эдакого...

Есть php и $_SERVER['REQUEST_URI'].
 

dub

Новичок
hermit_refined
ну что сказать, наверное таки да хочется чего нить эдакого. хочется сделать что-то, что принимало бы(заодно и проверку допустим проводило) $_SERVER['REQUEST_URI'] и формировало бы те или иные переменные в независимости GET это в чистом виде или мод реврайт.
 

hermit_refined

Отшельник
Ну. И что мешает в начале выполнения скрипта разбирать REQUEST_URI или PATH_INFO и формировать те или иные переменные?
 

uliss

Новичок
Я не проводил тестов, но имхо с mod_rewrite производительность должна быль лучше, чем при разборе URI в php, хотя бы потому, что php - интерпретатор.
 

kruglov

Новичок
uliss
И во сколько раз сервер будет быстрее страницы отдавать?

-~{}~ 26.10.06 13:39:

p.s. И почему тогда движки на php пишут, а не на ассемблере. Напишите разбор URI на ассемблере - вдруг будет еще быстрее, чем в mod_rewrite?
 

uliss

Новичок
kruglov
Ну ладно Вам :)

Просто mod_rewrite предназначен для преобразований url, так почему бы его не использовать для этого?

А то получится как с ROD Linux :D
 

Alexandre

PHPПенсионер
Я не проводил тестов, но имхо с mod_rewrite производительность должна быль лучше, чем при разборе URI в php, хотя бы потому, что php - интерпретатор
не факт, все зависит от кол-ва правил... от логики реврайта...
разбор простых рег выражений - ествественно быстрее, с учетом того, что модуль - постоянно сидит в памяти....Однако, если накрутить сложную логику и пр..., то скорость разбора рег будет сравнима со скоросьтью работы простого куска кода пхп.
 

uliss

Новичок
Ну ведь еще реги перед использованием компилируются (pcre_compile), а потом их можно сколько угодно юзать - так что и тут выигрыш.

Ну и еще, ведь ЧПУ по сути псевдонимы, зачем же логику их обработки вводить в движок? А если потребуется немного изменить или дополнить ЧПУ - придется изменять движок. В случае с mod_rewrite может потребоваться меньше изменений
 

hermit_refined

Отшельник
uliss
Про то, кешируются ли скомпилированные реги в mod_rewrite, тем более, если правила прописанны в .htaccess, - не знаю, исходники не смотрел. В ряде случаев выигрыш, конечно, есть, но он значим только для очень маленьких скриптов, так что определяющим остаётся удобство.

Как правило, в простой системе удобней mod_rewrite, в сложной - ручной разбор, тем более, что логика ЧПУ всё равно присутствует в скриптах (например - в редиректах), и разбрасывать её по двум местам - именно что нелогично.
 

MpaK69

Новичок
uliss

да вы этого и не заметити, сливайте все в php пусть он разбирает без регов, просто explode('/' чем плох?

У вас в скрипте будет куча других тормозных мест, но только ни это :)
 
Сверху