куда можно выложить код редиректов через header с использованием регурярных выражений, для SEO дыр Joomla + JbZoo за исключением дыры разбивки товаров на странички, пока не разобрался как получить число страничек на которые разбиваются категории товаров.
и пока не разобрался как заклеить дыру в теге /tag/, - скрипт предоставленный ниже редиректит со всех страничек с тегами, нужно допилить проверку, есть ли хоть 1 товар удовлетворяющий искомому тегу.
У себя на сайте решил вопрос с клонами разбивки на странички через регулярку, с указанием мах диапазона разбивки каждой категории на странички, очень не удобно - но работает.
Собственно сам код:
Вставить в код шаблона, или в отдельный файл и подключить через include_once
- <?php
- $find_klon_url = $_SERVER [HTTP_HOST].$_SERVER[REQUEST_URI]; // текущий url
- //print_r ($find_klon_url); // для проверки
-
- // ########################
- // редирект материалов без категории
- // [a-z0-9-]+ - цифры и буквы повторяющиеся 1+ раз
- // ([a-z0-9-]+)\. -//-// цикл - повторение символов до первого символа .
- // (([a-z0-9-]+)\.)+ цикл выше описанного, пока не закончатся .
- // [a-z0-9]+ - последняя доменная зона без .
- // [\/] - / в конце домена сайта
- $reg = "/^(([a-z0-9-]+)\.)+[a-z0-9]+[\/]item/i"; // домен + /item
- if ( preg_match ($reg, "$find_klon_url") ) // проверка регулярного выражения
- {
- //echo preg_match ($reg, "$find_klon_url") . "<br>";
- //echo "текущий url <br>" . ($find_klon_url) . "<br><br>";
- $new_url = 'https://'.$_SERVER [HTTP_HOST] . '/uslugi/item' . preg_replace($reg, "" , $find_klon_url);
- //echo "новый измененный url <br>" .($new_url) . "<br><br>";
- header("Location: $new_url"); // редирект на правильную страничку
- exit;
- }
- // ########################
- // редирект idex.php на корень сайта
-
- $reg = "/^(([a-z0-9-]+)\.)+[a-z0-9]+[\/]index.php/i"; // домен + /index.php
- if ( preg_match ($reg, "$find_klon_url") ) // проверка регулярного выражения
- {
- if (strripos($find_klon_url, '?option=com_jmap') !=0) {}
- else
- {
- //echo preg_match ($reg, "$find_klon_url") . "<br>";
- //echo "текущий url <br>" . ($find_klon_url) . "<br><br>";
- $new_url = 'https://'.$_SERVER [HTTP_HOST];
- //echo "новый измененный url <br>" .($new_url) . "<br><br>";
- header("Location: $new_url"); // редирект на правильную страничку
- exit;
- }
-
- }
-
- // ########################
- // редирект лишнего / в конце url
- $reg = "/\/$/i"; // редирект страничек с лишним / в конце url
- $domen = $_SERVER [HTTP_HOST]."/";
- if ( preg_match ($reg, "$find_klon_url") && $find_klon_url != $domen)
- {
- //echo preg_match ($reg, "$find_klon_url") . "<br>";
- echo "текущий url <br>" . ($find_klon_url) . "<br><br>";
- $new_url = 'https://' . preg_replace($reg, "" , $find_klon_url);
- echo "новый измененный url <br>" .($new_url) . "<br><br>";
- header("Location: $new_url"); // редирект на правильную страничку
- exit;
- }
- // ########################
- // редирект статьи которая находится одновременно в нескольких категориях
- $reg = "/\?category_id=[0-9]+/i"; // удаляем с url идентификатор дополнительной категории
- if ( preg_match ($reg, "$find_klon_url") )
- {
- //echo preg_match ($reg, "$find_klon_url") . "<br>";
- //echo "текущий url <br>" . ($find_klon_url) . "<br><br>";
- $new_url = 'https://' . preg_replace($reg, "" , $find_klon_url);
- //echo "новый измененный url <br>" .($new_url) . "<br><br>";
- header("Location: $new_url"); // редирект на правильную страничку
- exit;
- }
- // ########################
- // поиск запрещенных символов в url и редирект на главную страницу
- if (strripos($find_klon_url, '?option=com_jmap') !=0) {}
- else if (strripos($find_klon_url, '&') >0
- OR strripos($find_klon_url, '?') >0
- OR strripos($find_klon_url, '//') >0
- OR strripos($find_klon_url, '#') >0
- OR strripos($find_klon_url, '/tag/') >0
- OR strripos($find_klon_url, 'component') !=0
- )
- {
- $new_url = 'https://' . $_SERVER [HTTP_HOST];
- header("Location: $new_url"); // редирект на правильную страничку
- exit;
- }
- ?>