Я знаю, что что-то противоречиво, но, переписав мод, Muggle пришло время обратиться за помощью.
Я переписываю http://test.com/[name]/
до http://test.com/script.php?id=[name]
с успехом, используя:
(rule#1)
RewriteRule ^(.*)\/$ script.php?id=$1&%{QUERY_STRING} [L]
Далее я переписываю http://test.com/[name]/foobar/[key]
до http://test.com/script.php?id=[name]&foobar=[key]
также с успехом, используя:
(rule#2)
RewriteRule ^(.*)\/foobar/([0-9]+)$ script.php?id=$1&foobar=$2 [L]
Однако, когда я пытаюсь включить строки запроса,
так что http://test.com/[name]/foobar/[key]?p=[page]
можно переписать на http://test.com/script.php?id=[name]&foobar=[key]&p=[page]
с этим:
(rule#3)
RewriteRule ^(.*)\/foobar/([0-9]+)$ script.php?id=$1&foobar=$2&%{QUERY_STRING} [L]
тогда Apache просто возвращает меня к http://test.com/script.php.
Из проб и ошибок я знаю, что правило № 3 сработало бы, если бы оно не использовало тот же скрипт script.php, что и правило № 1,
но я понятия не имею, как это исправить, поэтому любая помощь приветствуется!
Arrgh..после двойной проверки моих правил с примерами Гамбо, я наконец узнал, что пошло не так. Хотя мои правила перезаписи не были идеальными, они работали, как задумано. Однако я полностью забыл, что у меня был другой скрипт, который проверяет допустимые параметры ... очевидно, выбрасывая случайные значения теста, иногда это не очень хорошая идея. Спасибо за ^ / трюк, хотя!