Передача динамических переменных в 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, будет очевидный недостаток, который заключается в том, сколько правил вы собираетесь добавить, когда у вас есть большие требования такого рода маршрутизации требования.