MagnetiZ
Новичок
Похоже.
Отошли от темы.
А ведь фонарные урлы - далеко не тривиальная проблема.
Вот в моем случае пришлось переделать старые урлы на новый лад.
При этом Весь механизм строится так
1. Модуль который формирует адреса
2. модуль который их разбирает
Дело в том что все адреса формируются одним модулем (может хорошо а может и нет) так:
1. Начало работы формирования страницы По ходу формирования страницы в определенных местах модули могут быть взаимоподчиненными
и следовательно каждые внутренние их параметры должны включать в себя и параметры родительских модулей.
Для этого собирается стек параметров по виду пар "имя=значение".
В результате при потребности сформировать адрес вызывает модуль который выдает в виде единого адреса собраный набор пар значений.
в качестве примера подчиненности модулей. простой случай многоязычности сайта . если выбран определенный отличный от значения по умолчанию язык,
то ко всем адресам подставляется еще дописывается пара язык=значение
Получается что при формировании адресов нельзя точно предсказать какие параметры будут переданы в текущий момент.
Поначалу при формировании просто все адреса записывались через / так Имя1/значение/имя2/значение и т.д
И для определения параметров даже mod_rewrite не требовался достаточно было включить MultiViews который сам искал первое совпадение на исполняемый файл
а все что лишнее отдавал как GET параметр который парсился отдельно простым explode.
Но такой подход требовал
1. Явно указать имя хотя бы одного существующего скрипта в пути даже если это индексный файл (http://domain/index/name/val/namee1/val)
По сути больше требований нет но все равно сердце не спокойно при таком подходе. какй то он некрасивый.
Плюсы при этом были в том что потребовались минимальные изменения во всем движке. и избавились от явных GET параметров.
Точно можно было определить какой параметр и с каким значением передается
Минусы:
1. В скрипте надо или не надо указывался исполняемый файл (уж точно никому не полезно видеть в пути /index/....)
2. Неизвестна эффективность работы MultiViews (как он ищет)
3. Исходя из того что парамтеры просто склеиваются / то невозможно сформировать пути типа /рубрика/подрубрика/.../статья/что то еще
а пусть будет в виде /рубрика/название рубрики/подрубрика/название подрубрики/статья/название статьи ....
При реализации красивых адресов при помощи mod_rewrite обычно все затачивается (к примеру для новостей год/месяц/день или как то иначе)
Можно для каждого модуля и его параметров указать свой набор правил mod_rewrite
но тогда каждый запрос будет проходить по всем правилам.
Может кто использовал Multiviews кто видел положительные и отрицательные стороны?
Может есть альтернативное решение для ситуации где адреса формируются с учетом заранее заданных параметров?
Отошли от темы.
А ведь фонарные урлы - далеко не тривиальная проблема.
Вот в моем случае пришлось переделать старые урлы на новый лад.
При этом Весь механизм строится так
1. Модуль который формирует адреса
2. модуль который их разбирает
Дело в том что все адреса формируются одним модулем (может хорошо а может и нет) так:
1. Начало работы формирования страницы По ходу формирования страницы в определенных местах модули могут быть взаимоподчиненными
и следовательно каждые внутренние их параметры должны включать в себя и параметры родительских модулей.
Для этого собирается стек параметров по виду пар "имя=значение".
В результате при потребности сформировать адрес вызывает модуль который выдает в виде единого адреса собраный набор пар значений.
в качестве примера подчиненности модулей. простой случай многоязычности сайта . если выбран определенный отличный от значения по умолчанию язык,
то ко всем адресам подставляется еще дописывается пара язык=значение
Получается что при формировании адресов нельзя точно предсказать какие параметры будут переданы в текущий момент.
Поначалу при формировании просто все адреса записывались через / так Имя1/значение/имя2/значение и т.д
И для определения параметров даже mod_rewrite не требовался достаточно было включить MultiViews который сам искал первое совпадение на исполняемый файл
а все что лишнее отдавал как GET параметр который парсился отдельно простым explode.
Но такой подход требовал
1. Явно указать имя хотя бы одного существующего скрипта в пути даже если это индексный файл (http://domain/index/name/val/namee1/val)
По сути больше требований нет но все равно сердце не спокойно при таком подходе. какй то он некрасивый.
Плюсы при этом были в том что потребовались минимальные изменения во всем движке. и избавились от явных GET параметров.
Точно можно было определить какой параметр и с каким значением передается
Минусы:
1. В скрипте надо или не надо указывался исполняемый файл (уж точно никому не полезно видеть в пути /index/....)
2. Неизвестна эффективность работы MultiViews (как он ищет)
3. Исходя из того что парамтеры просто склеиваются / то невозможно сформировать пути типа /рубрика/подрубрика/.../статья/что то еще
а пусть будет в виде /рубрика/название рубрики/подрубрика/название подрубрики/статья/название статьи ....
При реализации красивых адресов при помощи mod_rewrite обычно все затачивается (к примеру для новостей год/месяц/день или как то иначе)
Можно для каждого модуля и его параметров указать свой набор правил mod_rewrite
но тогда каждый запрос будет проходить по всем правилам.
Может кто использовал Multiviews кто видел положительные и отрицательные стороны?
Может есть альтернативное решение для ситуации где адреса формируются с учетом заранее заданных параметров?