У меня есть четкая система на основе URL-адресов, поэтому категории будут показаны так:
http://www.mysite.com/category/23/cat-name
Внутри страницы категорий у меня есть некоторые параметры сортировки и страниц, такие как сортировка по латтестам и более низкая цена. Кроме того, у меня есть система навигации по страницам
Проблема заключается в том, когда запрос происходит внутри страницы, $_GET[]
не отображает нужные мне переменные. Однако он отображается в URL как
http://www.mysite.com/category/23/cat-name?page=3
Переменная $_GET
показывает только идентификатор категории, которая в нашем случае теперь = 23
и игнорирует номер страницы, который находится в URL-адресе.
.htaccess
содержание
RewriteEngine On RewriteRule ^category/([0-9]+)/[az][-a-z0-9]*$ cat.php?id=$1
Вам нужно включить флаг QSA в конце вашего правила. Это добавляет любую существующую строку запроса к той, которая вы строите в самом правиле:
RewriteEngine On RewriteRule ^category/([0-9]+)/[az][-a-z0-9]*$ cat.php?id=$1 [L,QSA]
Таким образом, переписанный URI должен быть: /cat.php?id=23&page=3
Добавьте QSA (добавить строку запроса) в конце вашего правила перезаписи.
RewriteEngine On RewriteRule ^category/([0-9]+)/[az][-a-z0-9]*$ cat.php?id=$1 [L,QSA]
Когда URI замещения содержит строку запроса, поведение RewriteRule по умолчанию заключается в том, чтобы отменить существующую строку запроса и заменить ее на вновь созданную. Использование флага [QSA] приводит к объединению строк запроса.
С помощью флага [QSA] запрос / pages / 123? One = two будет отображаться на /page.php?page=123&one=two. Без флага [QSA] этот же запрос будет сопоставлен с /page.php?page=123 – то есть существующая строка запроса будет отброшена.