Перейти к содержимому



Пытаюсь составить правило для mod_rewrite.

#1 Necrosss
Necrosss
  • Неактивные
  • 1 сообщений
  • Репутация: 0
0

Обновлено 30 мая 2016 - 12:56  Отправлено 29 мая 2016 - 03:20

Работаю с чем-то вроде простенького интернет-магазина. Как у любого магазина у него есть сортировка товаров по разным параметрам. (По цене, по материалу, по длине/ширине и т.д.)
Реализовать это в виде обычных get-переменных, прописываемых в адресной строке было не сложно. Проблема случилась когда решил перевести это всё в ЧПУ.
Написать всё это ОДНИМ правилом (то есть запихнуть все параметры в один RewriteRule) не вариант. Потому что в таком случае оно сработает только если в адрес будут вбиты все переменные сразу. (а если кто-то захочет поискать только по цене или только по длине ?)
Тогда нужно много RewriteRule для каждого параметра по отдельности.

Написал что-то типа вот этого:

RewriteRule ^price_([0-9]+)/ &price=$1
RewriteRule ^material_(.*)/ &material=$1
RewriteRule ^length_([0-9]+)/ &length=$1
RewriteRule ^width_([0-9]+)/ &width=$1
И главное правило:
RewriteRule (.*) index.php?address=qwerty$1 [QSA,L]


Файл index.php содержит следующую запись: <?php print_r($_GET); ?>

В браузере вбил следующий адрес: ht tp://localhost/test/price_1000/material_дерево/length_10/width_5/thickness_3/

Итак на выходе получил:

Array ( [address] => qwerty [price] => 1000/material_дерево/length_10/width_5/thickness_3/ )

По сути сработало только првило для price.

Буду рад если кто-нибудь подскажет как можно починить.


 

 

Сообщение отредактировал Necrosss: 29 мая 2016 - 03:23

  • 0

#2 BLIK
BLIK
  • Супермодератор
  • 4 701 сообщений
  • Репутация: 1072

Отправлено 29 мая 2016 - 03:29

Буду рад если кто-нибудь подскажет как можно починить.
Точно не подскажу, но, попробуй тут правила сгенерировать http://www.generatei...write/index.php

 

Довольно неплохой генератор. 


  • 0

Качественный хостинг   Тут может быть ваша ссылка.



#3 miketomlin
miketomlin
  • Пользователь
  • 561 сообщений
  • Репутация: 118

Отправлено 30 мая 2016 - 12:56

@Necrosss, у вас PATH_INFO в конец цепляется из-за необычной подстановки. И с чего вы решили, что после срабатывания первого правила у вас в адресе останутся оставшиеся компоненты пути? Их нужно наследовать в первом правиле или повторно вгонять в адрес все подряд из REQUEST_URI (за счет PATH_INFO, может, компоненты и останутся, начиная со второго, но это оч. криво). Для совпадения с любой частью нужно убрать ^ в начале масок. По-моему лучше сделать более традиционное накопление параметров через ?бла-бла-бла и QSA.


  • 1




Похожие темы
  Название темы Автор Статистика Последнее сообщение

Пользователь месяца
albedo albedo 1-й за Май
Очков активности: 198 5 тем, 29 сообщений, 3 балла репутации
Сайт: online24news.ru
ТОП самых активных за этот месяц
  • Фотография maks200
    #1

    maks200
    Очков активности: 6 1 тема, 1 сообщение, 1 балл репутации

  • Фотография NewBlade
    #2

    NewBlade
    Очков активности: 6 1 тема, 1 сообщение, 1 балл репутации

  • Фотография magnet
    #3

    magnet (rbfxdirect.com)
    Очков активности: 4.5 1 тема, 0 сообщений, 1 балл репутации

  • Фотография Movut
    #4

    Movut (seo-aspirant.ru)
    Очков активности: 4.5 1 тема, 0 сообщений, 1 балл репутации

  • Фотография Zevss
    #5

    Zevss (domles43.ru)
    Очков активности: 4.5 1 тема, 0 сообщений, 1 балл репутации

  • Фотография 1head
    #6

    1head
    Очков активности: 4.5 1 тема, 0 сообщений, 1 балл репутации

  • Фотография Nik_2266999
    #7

    Nik_2266999
    Очков активности: 3 0 тем, 2 сообщения, 1 балл репутации

  • Фотография wp01
    #8

    wp01
    Очков активности: 3 0 тем, 2 сообщения, 1 балл репутации

  • Фотография getsend
    #9

    getsend
    Очков активности: 3 0 тем, 2 сообщения, 1 балл репутации

  • Фотография Constantine
    #10

    Constantine (constantine174.blogspot.com)
    Очков активности: 3 0 тем, 2 сообщения, 1 балл репутации

  • Показать весь ТОП 10

Поддержите форум! =)
Топ 5 участников по репутации

Оформление форума – IPBSkins.ru