Пагинация без потери GET параметров?
<?php unset($_GET['page']); ?>
<a href="/shop?<?=http_build_query($_GET)?>&page=1">Страница 2</a>
Очевидно в ссылке нужно не статично писать URI, а динамически туда подставлять// Merge $_GET with new parameter
$QS = http_build_query(array_merge($_GET, array("page"=>2)));

// You should apply htmlspecialchars() on the path prior outputting:
echo "<a href='" . htmlspecialchars("$_SERVER[PHP_SELF]?$QS") . "'> $i </a>";Источник: https://stackoverflow.com/questions/4856480/how-to...