Как улучшить SEO новостного сайта с помощью внутренней перелинковки?
Здравствуйте и добро пожаловать, дорогие друзья! Я рад, что вы заглянули на эту страницу, и сегодня я хочу рассказать вам о внутренней перелинковке и о том, как она может улучшить SEO вашего сайта.
скриншоты взяты с сайта wired.com
Внутренняя перелинковка — это процесс создания ссылок на другие страницы внутри вашего сайта. Это означает, что вы устанавливаете гиперссылки между различными страницами, принадлежащими одному и тому же домену.
Внутренняя перелинковка имеет несколько целей и преимуществ:
Улучшение навигации: создавая ссылки между связанными страницами, вы облегчаете пользователям навигацию по вашему сайту. Они могут легко переходить с одной страницы на другую, что повышает удобство использования.
Улучшение индексации поисковыми системами: Поисковые системы используют ссылки для просмотра и индексации веб-страниц. Внутренние ссылки помогают поисковым системам обнаружить больше страниц на Вашем сайте.
Распределение авторитета ссылок: Внутренние ссылки помогают распределить авторитет между страницами сайта. Это может способствовать повышению рейтинга и видимости отдельных страниц в результатах поиска.
Повышение релевантности: Внутренние ссылки также помогают установить связь между тематическими страницами. Это помогает поисковым системам понять, какие страницы связаны между собой, и повышает их релевантность конкретным запросам пользователей.
В этой статье мы рассмотрим практические приемы внутренней перелинковки для новостного сайта или новостного раздела корпоративного сайта с помощью специальных блоков. Мы будем использовать следующий метод
Блок «Популярные новости»,
блок «Похожие новости».
Внутренняя перелинковка была реализована на сайте, созданном с помощью пользовательской системы администрирования на PHP и MySQL.
Таблица «Новости», в которой хранились новости, выглядела следующим образом:
Блок «Популярные новости»
Блок «Популярные новости» позволяет посетителям сайта увидеть наиболее читаемые (интересные) новостные статьи, опубликованные за последнее время. Блок размещается на каждой странице новостей и содержит одни и те же ссылки. Чем больше просмотров у страницы и чем свежее была опубликована статья, тем выше вероятность ее появления в этом блоке. Оптимальное количество новостных статей в таком блоке — пять. Это число зависит от конкретного проекта и может экспериментально варьироваться для разных проектов.
SEO-цель этого блока — ускорить индексацию перспективных новостных статей и придать им максимальный вес по сравнению с другими новостными страницами сайта.
скриншоты взяты с сайта wired.com
Задача выделения пяти наиболее популярных новостных статей решается следующим образом:
<br />
$result = mysqli_query($con, «SELECT * FROM news WHERE id<>’$id'<br />
ORDER BY (CAST(viewcount AS SIGNED) — DATEDIFF(NOW(), date)*2) DESC<br />
LIMIT 5″);<br />
Мы обращаемся к «таблице новостей» с единственным условием — чтобы столбец «id» (с автоинкрементом) не был равен переменной $id (значение этого столбца для открытой новостной статьи). Это условие гарантирует, что текущая страница, на которой мы находимся, будет исключена из блока «Популярные новости». Далее приступаем к сортировке.
С помощью функции CAST мы преобразуем количество просмотров из столбца «viewcount» в формат SIGNED (64-разрядное знаковое целое).
С помощью функции DATEDIFF вычисляется возраст новостной статьи (разница между текущей датой и столбцом «date», в котором хранится дата создания новостной статьи).
Возраст новостной статьи умножаем на коэффициент распада, который определяется исходя из частоты публикаций новостной статьи. В данном случае этот коэффициент равен двум. Если кажется, что в блоке появляются слишком старые статьи или, наоборот, статьи с очень низким количеством просмотров, то этот коэффициент можно соответствующим образом скорректировать.
Затем с помощью DESC LIMIT мы выбираем нужное количество статей (в данном случае 5), отсортированных в порядке убывания. В результате мы получаем выборку из пяти популярных новостных статей, которую выводим в нужное место с помощью mysqli_fetch_array.
Для создания перекрестной ссылки на перспективную новостную статью с помощью этого блока мы искусственно увеличиваем счетчик просмотров страницы, вводя в колонку viewcount желаемое количество просмотров. Однако если количество просмотров отражается на нашей странице и мы хотим отображать реальные, а не искусственно раздутые данные, то имеет смысл создать в базе данных дополнительный столбец для корректировки значения.
скриншоты взяты с сайта wired.com
Недостаток указанного алгоритма становится очевидным при добавлении в базу данных большого количества новостных статей, так как вычисление возраста каждой из них занимает значительное время. Поэтому для новостных сайтов стоит добавить дополнительное условие — дата создания новостной статьи не должна быть раньше определенной даты, что повышает скорость загрузки. Однако если речь идет о крупных новостных сайтах с миллионами записей, то стоит кэшировать этот блок: создать отдельную базу данных с популярными новостными статьями и обновлять ее несколько раз в день. В отличие от блока «Связанные новости», список популярных статей не зависит от категорий и тегов, что делает его общим для всех новостных страниц. Единственное, что необходимо помнить, — не выводить ссылку на статью на ее собственной странице. Поэтому во временной базе данных должно быть на одну запись больше, чем количество отображаемых статей. Но если вы хотите, чтобы все было сделано за вас, добро пожаловать к нам на аутсорсинг!
Итак, используя панель администрирования MySQL, мы копируем базу данных «news» в базу данных «popnews» с опцией «только структура». По сути, мы создали новую пустую базу данных с теми же колонками. Затем мы заполняем ее шестью популярными новостными статьями (5 + 1). Данный скрипт должен выполняться через cron.
<br />
mysqli_query($con, «truncate table popnews;»);<br />
mysqli_query($con, «INSERT INTO popnews SELECT * FROM news WHERE<br />
id<>’$id’ ORDER BY (CAST(viewcount AS SIGNED) — DATEDIFF(NOW(),<br />
date)*2) DESC LIMIT 6″);<br />
При загрузке страницы мы не запрашиваем всю базу данных «news», которая содержит большое количество записей, а обращаемся к базе данных «popnews», которая содержит ровно шесть популярных записей и открывается быстро.
<br />
$result = mysqli_query($con, «SELECT * FROM popnews WHERE id<>’$id'<br />
ORDER BY id DESC LIMIT 5″);<br />
Если требуется сортировка, то уточняем:
<br />
$result = mysqli_query($con, «SELECT * FROM popnews WHERE id<>’$id'<br />
ORDER BY (CAST(viewcount AS SIGNED) — DATEDIFF(NOW(), date)*2) DESC<br />
LIMIT 5″);<br />
Блок «Связанные новости»
Данный блок используется для контекстной перелинковки. В отличие от обычной внутренней перелинковки, где ссылки могут быть установлены на произвольные страницы, контекстная перелинковка обеспечивает более глубокую связь между контекстом текста и целевыми страницами.
Блок «Похожие новости» помогает пользователям получить дополнительную информацию по читаемой теме, не прибегая к поисковой функции сайта. Это улучшает навигацию и повышает удобство пользования сайтом.
С точки зрения SEO этот блок служит для того, чтобы придать дополнительный вес последним новостным статьям в каждой категории и связать их в единый контекстный блок для представления поисковым системам.
Таблица «tags», в которой хранятся теги, выглядит следующим образом:
Блок «Связанные новости» реализован с использованием тегов
Однако при вызове блока мы не запрашиваем эту таблицу. Вместо этого мы используем только идентификатор каждого тега.
Список тегов для каждой конкретной новости мы храним в столбце «tags» таблицы «news» в формате #1#2#3#4#, где каждое число между хэштегами обозначает ID тега. Стоит отметить, что в целом это, возможно, не самый лучший способ организации базы данных, но для данного конкретного решения он достаточно удобен. Отбор новостей осуществляется следующим образом. Сначала задается условие:
<br />
$tags=explode(‘#’,$news[‘tags’]);// преобразуем список тегов в массив<br />
array_shift($tags);<br />
array_pop($tags);// удаляем первый и последний пустые элементы<br />
$m=»»;// не забываем сбрасывать переменные<br />
for($i=0;$i<count($tags);$i++){
$m.=»tags LIKE ‘%#».$tags[$i]. «#%'»;
if($i+1!=count($tags)){ $m.=» OR «;}
}
В результате переменная $m будет представлять собой строку вида: «tags LIKE ‘%#1#%’ OR tags LIKE ‘%#2#%’ OR tags LIKE ‘%#3#%’ OR tags LIKE ‘%#4#%'». Мы используем хэштеги вокруг цифр, чтобы избежать ложных совпадений с многозначными числами. Например, %1% будет соответствовать и 1, и 10, и 21. Установив условие, мы находим последние новостные статьи, имеющие хотя бы один общий тег с текущей новостной статьей.
Кэширование, как в предыдущем блоке, нецелесообразно, поскольку для каждого тега будет своя группа статей, а тегов может быть очень много. Однако условие здесь проще и выполняется быстрее. В результате мы получаем выборку из четырех популярных новостных статей, которую выводим в нужное место с помощью mysqli_fetch_array.
Заключение
Для продвижения новостного сайта перераспределение веса страницы становится критически важным фактором. Естественный ссылочный вес, как правило, накапливается на страницах «трендовых» новостных статей. Однако со временем новостные статьи устаревают и теряют актуальность. Поэтому задача состоит в том, чтобы сместить вес в сторону новых, недавно созданных страниц. Именно здесь ключевую роль играет внутренняя перелинковка, без которой решить эту задачу крайне сложно.