Передача динамических переменных в htaccess / php

у меня есть сайт, созданный динамическим, и информация (область / категория / подкатегория) проходит через htaccess для хороших URL-адресов. Например, когда пользователь погружается в категории, он течет следующим образом:

/parts/hard-drives

/parts/hard-drives/hard-drives-sas

Я задавался вопросом, есть ли способ расширить это с тех пор в htaccess, чтобы я мог передать больше элементов и захватить переменную с php, т. е.:

/parts/hard-drives/hard-drives-sas/?manufacturer=dell&price=20

мои текущие строки для файла htaccess следующим образом:

RewriteRule ^parts/([^/.]+)/([^/.]+)/?$ parts.php?p=&f= [L]
RewriteRule ^parts/([^/.]+)/?$ parts.php?p= [L]
RewriteRule ^parts parts.php [L]

вы увидите первая строка относится к /products/hard-drives/hard-drives-sas второй относится к /products/hard-drives а затем просто страница частей /parts

надеюсь, это имеет смысл!

спасибо.

2 ответов


использовать QSA флаг для передачи переменных GET:

RewriteRule ^parts/([^/\.]+)/([^/\.]+)/?$ parts.php?p=&f= [L,QSA]
RewriteRule ^parts/([^/\.]+)/?$ parts.php?p= [L,QSA]
RewriteRule ^parts parts.php [L,QSA]

Docs:

когда URI замены содержит строку запроса, значение по умолчанию поведение RewriteRule заключается в отбрасывании существующей строки запроса и замените его новым. Использование флага [QSA] вызывает строки запроса для объединения.

рассмотрим следующее правило:

RewriteRule /pages/(.+) /page.php?page= [QSA]

С флагом [QSA] запрос на /страницы/123?один=два будет отображаться to / page.РНР?page=123 & one=два. Без флага [QSA], то же самое запрос будет отображаться на странице.РНР?page=123-то есть существующий строка запроса будет отброшена.

http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_qsa


Я верю, что путем редактирования .htaccess на сервере адаптировать эту концепцию маршрутизации будет настоящей болью. Я бы рекомендовал вам взглянуть на фреймворк PHP, такой как CodeIgniter, CakePHP и т. д. Они все уже подготовили механизм маршрутизации, который вы хотели. И это довольно легко понять. Путем редактирования. htaccess, будет очевидный недостаток, который заключается в том, сколько правил вы собираетесь добавить, когда у вас есть большие требования такого рода маршрутизации требования.