X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Пытаюсь составить правило для mod_rewrite.
Necrossss
Necrossss
Topic Starter сообщение 29.5.2016, 4:20; Ответить: Necrossss
Сообщение #1


Работаю с чем-то вроде простенького интернет-магазина. Как у любого магазина у него есть сортировка товаров по разным параметрам. (По цене, по материалу, по длине/ширине и т.д.)
Реализовать это в виде обычных 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.5.2016, 4:23
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
BLIK
BLIK
сообщение 29.5.2016, 4:29; Ответить: BLIK
Сообщение #2


(Necrosss @ 29.5.2016, 06:20) *
Буду рад если кто-нибудь подскажет как можно починить.
Точно не подскажу, но, попробуй тут правила сгенерировать http://www.generateit.net/mod-rewrite/index.php

Довольно неплохой генератор. 
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
miketomlin
miketomlin
сообщение 30.5.2016, 13:56; Ответить: miketomlin
Сообщение #3


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


Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) ✅ sms.chekons.com - ⭐ Сервис для получения SMS на реальные номера USA "Non-VoIP, безлим SMS, API" ⭐
Сервис для получения SMS на реальные номера USA
13 Chekon 4054 Сегодня, 11:48
автор: Chekon
Открытая тема (нет новых ответов) Rebex.io – Ваша инновационная платформа для обмена криптовалюты!
1 Rebex 667 Вчера, 11:50
автор: Rebex
Открытая тема (нет новых ответов) Какой % отказов нормален для сайта?
11 Aloof 2802 16.4.2024, 12:48
автор: diviner99
Горячая тема (нет новых ответов) Betatransfer.net - прием платежей для HIGH RISK проектов, интернет эквайринг и мерчант онлайн оплат
54 arendator 34819 15.4.2024, 15:16
автор: arendator
Горячая тема (нет новых ответов) ⭕Антидетект браузер AdsPower для эффективной работы с мультиаккаунтами!
83 AdsPower 24410 14.4.2024, 22:52
автор: AdsPower


 



RSS Текстовая версия Сейчас: 18.4.2024, 20:58
Дизайн