Назад | Перейти на главную страницу

Как переписать динамический URL-адрес на короткий URL-адрес с помощью PHP .htaccess?

Я хочу переписать 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]