Имея немного больше информации, вы можете взять ваши URL с произвольным числом пар ключ-значение и преобразовать их в строку запроса для передачи в ваш скрипт.Если я правильно помню, Гамбо ответил на аналогичный вопрос с некой «петлей», которая допускала бы нечто подобное.
Однако, как я полагаю, он указал в то время, иЯ укажу вам сейчас, делать это с mod_rewrite
действительно не очень хорошая идея.Гораздо лучше просто mod_rewrite
переписать ваш URL в ваш скрипт:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/models/.*$ /models [NC,L]
... Затем проанализировать исходное значение REQUEST_URI
, чтобы извлечь нужную информацию.Выбранный вами язык сценариев является гораздо более подходящим инструментом для этой задачи, чем mod_rewrite
.
Что касается исправления вашего текущего правила, я думаю, возможно, ваш запрос к серверу имел косую черту?Поскольку ваши (.*)
группировки могут совпадать с чем угодно (или ничем), они будут жадно использовать первую косую черту как часть имени ключа, если за вами следуют три других косых черты.Простым решением было бы не совпадать с косыми чертами в вашей группе захвата:
RewriteRule ^/models/([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /models?$1=$2&$3=$4 [NC,L]
Обратите внимание, что если вы попытаетесь сделать это как последовательность из шести отдельных правил, у вас закончатся обратные ссылкиТак как самое большее, что вы можете получить (что вы определили), это 9.