Я хочу переписать http://example.com/?paginate=2
так как http://example.com/page/2
.
Поэтому я использую для этого следующее правило, но оно не работает.
RewriteRule ^page/(.*)/([0-9]+) ?paginate=$1 [L]
Любые предложения были бы замечательными, и большое спасибо!
RewriteRule ^page/(.*)/([0-9]+) ?paginate=$1 [L]
В RewriteRule
шаблон не соответствует URL вашего запроса (/page/2
). У вас слишком много сегментов пути (он соответствует URL-адресу формы /page/something/2
). Вместо этого вам понадобится следующее правило:
RewriteRule ^page/([0-9]+)$ ?paginate=$1 [L]
ОБНОВИТЬ: Однако, поскольку это внутренняя перезапись, вам, вероятно, следует перезаписывать непосредственно файл, обрабатывающий запрос (возможно, index.php
- в DirectoryIndex
), а не позволять mod_dir делать это. Сам по себе, ?paginate=<number>
не совсем корректно, поэтому mod_dir выдает внутренний подзапрос на index.php?paginate=<number>
. В идеале вы должны быть явными и включать полный URL-путь в RewriteRule
замена чтобы избежать этой дополнительной зависимости. Например:
RewriteRule ^page/([0-9]+)$ index.php?paginate=$1 [L]