Ваше правило должно быть определено до ^ index.php [L]
, поскольку оно ловит все, и ваше правило никогда не будет достигнуто.В частности, в вашем случае он должен быть помещен даже перед строкой RewriteCond
, поскольку условия могут применяться только к одному правилу.Обдумайте, как использовать правила пропуска .
И пока внутренняя перезапись URL будет работать, то есть вы сможете получить доступ к параметрам запроса, оставив URL-адреснеизменный может иметь отрицательные побочные эффекты, например, Router::url()
приведет к:
/ledgers/index/1/2?page=1&tribe=2
вместо:
/ledgers/index?page=1&tribe=2
Так что вы можете рассмотреть вопрос о выдаче фактического перенаправления, как это (примечаниенеобязательный закрывающий слеш и +
в круглых скобках, чтобы соответствовать целому числу, а не только последней цифре):
RewriteRule ^ledgers/index/(\d+)/(\d+)/?$ /ledgers/index?page=$1&tribe=$2 [NC,L,QSA,R=301]
Это будет перенаправлять извне на новую структуру URLи используя флаг QSA
, он также позволяет объединить возможные параметры запроса, например:
/ledgers/index/1/2?foo=bar
перенаправит на:
/ledgers/index?page=1&tribe=2&foo=bar
См. также