htaccess: использование %1 и %2 в RewriteRule

В рамках приведения к ЧПУ на сайте были изменены адреса страниц. Реализация была через одну точку входа, хотя к вопросу это, наверное, не относится:

    RewriteRule ^akb/(.*)$ /url-processor.php

Для исключения дублей страниц теперь нужно сделать переадресацию, например: catalog.php?boxtype=b24&page=3 => akb/boxtype/b24/page-3

Пробовал так:

    RewriteCond %{QUERY_STRING} boxtype=([a-zA-Z0-9]+)
    RewriteCond %{QUERY_STRING} page=([0-9]+)
    RewriteRule catalog.php /akb/boxtype/%1/page-%2? [R=301,L]

Ожидал, что вместо %1 подставится "b24", вместо %2 - "3". Фактически переадресация идет на /akb/boxtype/3/page-, т. е. %1 = "3", %2 = "". Почему не %1 = "b24", %2 = "3", и как использовать сразу две переменных?

Дополнение. Ответ на вопрос "почему" получен. Пришел в голову вариант решения:

RewriteCond %{QUERY_STRING} boxtype=([a-zA-Z0-9]+)
RewriteRule catalog.php catalog.php/%1 [QSA]
RewriteCond %{QUERY_STRING} page=([0-9]+)
RewriteRule catalog.php/(.*) /akb/boxtype/$1/page-%1? [R=301,L]

Вроде, переадресовывает, куда нужно. Но с htaccess опыта работы вообще нет. Может быть, есть более изящное решение? Или подводные камни в предложенном варианте...


Ответы (0 шт):