Мы используем cookie-файлы
Для оптимизации работы нашего сайта мы используем cookie-файлы. Продолжая использовать сайт, Вы соглашаетесь с использованием cookie-файлов.
  • Русский
  • Українська
  • UAH
  • USD
  • RUB
  • EUR
  • +38(044) 392-74-33  Киев
  • +38(057) 728-39-00  Харьков
  • +38(056) 794-38-31  Днепр
  • +38(032) 229-58-93  Львов
  • +38(048) 738-57-70  Одесса
  • +38(093) 170-15-42  Life
  • +38(067) 400-88-44  Киевстар
  • +38(095) 630-90-82  Vodafone
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7(499) 348-28-61  Москва

Хостинг. "Замещение" правил mod_rewrite

Форумы Хостинг "Замещение" правил mod_rewrite

eyemchenko
9 лет
0
"Замещение" правил mod_rewrite

А у меня такая вот загогулина. Есть к примеру 2 url и два правила:
1)menu.php?id=*
RewriteRule ^([^/]*)/$ /menu.php?id=$1 [L,QSA]
2)products.php?s=*
RewriteRule ^([^/]*)/$ /products.php?s=$1 [L,QSA]
Url преобразуется в нужный нам вид типа www.example.com/example/, с этим все нормально. Проблема вот в чем - правило нормально работает лишь то, которое указывается раньше, чем предыдущее, т.е. если первое правило стоит выше 2-ого, то нормально работает лишь страница menu.php, а products.php в это время использует первое правило, вместо указанного второго. Если же второе правило поднять - то соответственно все наоборот. Ох и объяснил наверное:) В общем есть ли какие-то варианты жесткого ограничения этих правил? Чтобы преобразование принимало участие лишь при наличии определенной страницы, определенных параметров и т.д.? Кто подскажет?

rudenko
9 лет
0

Все правильно, два правила одновременно работать не будут, так как mod_rewrite при запросе /test/ не знает куда отправлять пользователя на страницу menu.php или products.php.
Нужно разделить правила, например так:
RewriteRule ^menu/([^/]*)/$ /menu.php?id=$1 [L,QSA]
RewriteRule ^products/([^/]*)/$ /products.php?s=$1 [L,QSA]
и соответственно формировать ссылки (/products/test/, /menu/test/).

eyemchenko
9 лет
0

да, уже разобрался. тут как вариант еще есть, указать в условии - [0-9], если параметр конечно состоит только из цифр.

Участвовать в общении на этом форуме могут только зарегистрированные пользователи.