Добрый день. У меня есть пагинация на сайте. Хочу сделать красивые url, но не получается. Url меняется, но страницу пагинации не переходит. Буду рад любой помощи.
в .htacces прописываю:
php_value auto_prepend_file "/home/bitrix/ext_www/pagen.php"
RewriteRule ^(.*)page-1(.)$ /$1 [R=301,L]
RewriteRule ^(.*)/page-([\d]+)/ /$1/?PAGEN_1=$2 [L,QSA]
В компоненте пагинации прописываю:
<?php
$pagination = ob_get_contents();
$pagination = preg_replace_callback('/href="([^"]+)"/is', function($matches) {
$url = $matches[1];
$newUrl = '';
if ($arUrl = parse_url($url)) {
$newUrl = isset($_SERVER['REAL_FILE_PATH']) && strlen($_SERVER['REAL_FILE_PATH']) ? str_replace('//','',preg_replace('/page-(\d+)/i', '/',$_SERVER['SCRIPT_URL'])) : $_SERVER['SCRIPT_NAME'];
$newUrl = str_replace(array('index.php', 'index.html'), '', $newUrl);
parse_str(htmlspecialcharsback($arUrl['query']), $arQuery);
foreach ($arQuery as $k => $v) {
if (in_array($k, array('SECTION_CODE'))) {
unset($arQuery[$k]);
} elseif (substr($k, 0, 5) == 'PAGEN') {
$newUrl .= 'page-'.intval($v).'/';
unset($arQuery[$k]);
}
}
$buildQuery = http_build_query($arQuery, '', '&');
if (strlen($buildQuery)) {
$newUrl .= '?'.$buildQuery;
}
}
return 'href="'.$newUrl.'"';
}, $pagination);
ob_end_clean();
echo $pagination;
?>
И файл pagen.php
<?php
$_SERVER['REQUEST_URI'] = preg_replace('#(page-[\d]+/)#is', '', $_SERVER['REQUEST_URI']);
?>
Источник:
https://ashevchuk.blog/bitrix/chpu-paginatsiya-na-...