Удаление GET параметра из URL строки PHP




Часто бывает необходимость при SEO-оптимизации избавиться от дубликатов, дубликатами могут быть страницы пагинации, которые имеют GET параметр page=2 , например.

 

Для этого можно создать сниппет и написать функцию обработки canoniacal ссылки

 

 

<?php
function deleteGET($url, $name, $amp = true) {
$url = str_replace("&amp;", "&", $url); // Заменяем сущности на амперсанд, если требуется
list($url_part, $qs_part) = array_pad(explode("?", $url), 2, ""); // Разбиваем URL на 2 части: до знака ? и после
parse_str($qs_part, $qs_vars); // Разбиваем строку с запросом на массив с параметрами и их значениями
unset($qs_vars[$name]); // Удаляем необходимый параметр
if (count($qs_vars) > 0) { // Если есть параметры
$url = $url_part."?".http_build_query($qs_vars); // Собираем URL обратно
if ($amp) $url = str_replace("&", "&amp;", $url); // Заменяем амперсанды обратно на сущности, если требуется
}
else $url = $url_part; // Если параметров не осталось, то просто берём всё, что идёт до знака ?
return $url; // Возвращаем итоговый URL
}

if(isset($_GET['page'])){
$actual_link = "https://".$_SERVER['HTTP_HOST'].$_SERVER[REQUEST_URI];

$canonical_link = deleteGET($actual_link, "page");

$canonical_meta = "<link rel='canonical' href='$canonical_link'/>";




echo $canonical_meta;
}



Просмотров: 110