- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Переиграть и победить: как анализировать конкурентов для продвижения сайта
С помощью Ahrefs
Александр Шестаков
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте ув. вебмастера. Подскажите пожалуйста, как прописывается тег rel=canonical в php файле. Файл отвечающий за вывод 10 категорий view_cat.php генерирует view_cat.php&cat=1,2,3... Те в свою очередь разбиваются постраничной навигацией на view_cat.php&cat=1&page=1,2,3.....
Догадался загнать тег в таблицу и выводить на положеной странице. Правильно ли это? Если нет, предложите пожалуйста вариант или скиньте ссылку, где об этом почитать. Заранее спасибо.
rel=canonical нужно писать внутри head. Куда Вы говорите его прописали?
Что бы ответить на Ваш вопрос, нужно знать что у вас за CMS или что именно генерирует страницы.
Используется ли какая-то CMS или фреймворк? Нужно искать функцию добавления заголовка.
У меня не cms, а самописный движок на пхп. Еще ничего я не прописывал, а думаю выводить rel=canonical из таблицы в БД. Вот исходный код:
<?php include ("blocks/bd.php");
if(isset($_GET['cat'])) {$cat = $_GET['cat']; }
if (!isset($cat)) {$cat = 1;}
/* Проверяем, является ли переменная числом */
if (!preg_match("|^[\d]+$|", $cat)) {
exit ("<p>Неверный формат запроса! Проверьте URL!");
}
$result = mysql_query("SELECT * FROM categories WHERE id = '$cat'",$db);
if (! $result)
{
echo "<p>no</p>";
exit (mysql_error());
}
$myrow = mysql_fetch_array($result);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title><?php echo $myrow ["title"]; ?></title>
<link href="style.css" rel="stylesheet" type="text/css">
<link rel="icon" href="img/favicon.ico" type="image/x-icon">
<meta name="description" content="<?php echo $myrow ["meta_d"]; ?>">
<meta name="keywords" content="<?php echo $myrow ["meta_k"]; ?>">
</head>
<body>
<div id="container">
<div id="header"> <?php include ("blocks/header.php");?>
</div>
<div id="left">
<?php include ("blocks/lefttd.php");?>
</div>
<div id="content">
<div id="tabsI"><?php include ("blocks/nav.php");?>
</div>
<div id="text"><?php
printf ("<p class='post_title2'>%s</p>",
$myrow ["title"]);?>
<noindex><div id="adsens"><?php include ("adsens2.php");?></div></noindex>
<?php
echo $myrow ["text"];
$result77 = mysql_query("SELECT str FROM options", $db);
$myrow77 = mysql_fetch_array($result77);
$num = $myrow77["str"];
// Извлекаем из URL текущую страницу
$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result00 = mysql_query("SELECT COUNT(*) FROM data WHERE cat='$cat'");
$temp = mysql_fetch_array($result00);
$posts = $temp[0];
// Находим общее число страниц
$total = (($posts - 1) / $num) + 1;
$total = intval($total);
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
// Вычисляем начиная с какого номера
// следует выводить сообщения
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start
$result2 = mysql_query("SELECT id,title,description,date,author,mini_img,view FROM data WHERE cat='$cat' ORDER BY id LIMIT $start, $num",$db);
if (! $result2)
{
echo "<p>no</p>";
exit (mysql_error());
}
$myrow2 = mysql_fetch_array($result2);
do
{
printf ("<table align ='center' class ='post'>
<tr>
<td class='post_title'>
<p class = 'post_name'><img class = 'mini' align='left' src = '%s'><a class='a' href ='view_post.php?id=%s'>%s</a></p>
<p class='post_adds'>Дата добавления: %s </p>
<p class='post_adds'>Автор: %s </p></td>
</tr>
<tr>
<td>%s <p class = 'post_view'> Просмотров: %s</p></td>
</tr>
</table>",$myrow2["mini_img"], $myrow2["id"], $myrow2["title"], $myrow2["date"], $myrow2["author"], $myrow2["description"], $myrow2["view"]) ;
}
while ($myrow2 = mysql_fetch_array($result2));
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href=view_cat.php?cat='.$cat.'&page=1>Первая</a> | <a href=view_cat.php?cat='.$cat.'&page='. ($page - 1) .'>Предыдущая</a> | ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 1) .'>Следующая</a> | <a href=view_cat.php?cat='.$cat.'&page=' .$total. '>Последняя</a>';
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 5 > 0) $page5left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';
if($page - 4 > 0) $page4left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 4) .'>'. ($page - 4) .'</a> | ';
if($page - 3 > 0) $page3left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';
if($page - 2 > 0) $page2left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href=view_cat.php?cat='.$cat.'&page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
if($page + 5 <= $total) $page5right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 5) .'>'. ($page + 5) .'</a>';
if($page + 4 <= $total) $page4right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 4) .'>'. ($page + 4) .'</a>';
if($page + 3 <= $total) $page3right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 3) .'>'. ($page + 3) .'</a>';
if($page + 2 <= $total) $page2right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 1) .'>'. ($page + 1) .'</a>';
// Вывод меню если страниц больше одной
if ($total > 1)
{
Error_Reporting(E_ALL & ~E_NOTICE);
echo "<div class=\"pstrnav\">";
echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
echo "</div>";
}
?>
</div>
<p class='post_title3'>Лучшие статьи</p>
<?php
$result3 = mysql_query("SELECT id,title,mini_img FROM data ORDER BY view DESC,id DESC LIMIT 5 ",$db);
if (! $result3)
{
echo "<p>no</p>";
exit (mysql_error());
}
$myrow3 = mysql_fetch_array($result3);
do
{
printf ("<p class='post_name3'><img class = 'mini2' align='left' src = '%s'><a class='nav_link2' href ='view_post.php?id=%s'>%s</a></p>",
$myrow3["mini_img"], $myrow3["id"], $myrow3["title"]) ;
}
while ($myrow3 = mysql_fetch_array($result3));
?>
</div>
<div id="clear"></div>
<div id="footer">
<?php include ("blocks/footer.php");?>
</div>
</div>
</body>
</html>
<link rel="canonical" href="..."/>
Пропишите его сюда:
Надеюсь вы только учитесь? Так как код оставляет желать лучшего.. Даже парсер кода на форуме не хочет его понимать.
denis21, https://support.google.com/webmasters/answer/139066?hl=en
Add a <link> element with the attribute rel="canonical" to the <head> section of these pages:
if (!isset($cat)) {$cat = 1;}
Чувствуется стиль мастера. ТС, откройте для себя if-else, или тернарные выражения
$cat = (isset($_GET['cat'])) ? $_GET['cat'] : 1;
<link rel="canonical" href="..."/>
Надеюсь вы только учитесь? Так как код оставляет желать лучшего.. Даже парсер кода на форуме не хочет его понимать.
Так и есть. Спасибо за ответ