SEO for News Sites: Internal Linking Tips and Best Practices
How to improve SEO of a news website through internal linking?

How to improve SEO of a news website through internal linking?

Hello and welcome, dear friends! I’m glad you checked out this page and today I would like to tell you about internal linking and how it can improve SEO of your web site.

internal linking
screenshots were taken from

Internal linking is the process of creating links to other pages within your own website. This means that you establish hyperlinks between different pages that belong to the same domain.

Internal linking serves several purposes and advantages:

  • Improved navigation: by creating links between related pages, you make it easier for users to navigate through your website. They can easily move from one page to another, enhancing usability.
  • Improving search engine indexing: Search engines use links to crawl and index web pages. Internal links help search engines discover more pages on your website.
  • Distributing link authority: Internal links help distribute the weight between pages on your site. This can help increase the rankings and visibility of individual pages in search results.
  • Increasing relevance: Internal links also help establish connections between thematic pages. This helps search engines understand which pages are related and increases their relevance to specific user queries.

In this article, we will discuss practical methods of internal linking for a news website or news section of a corporate website using special blocks. We will be using the following method

  • “Popular News” block,
  • “Related News” block.

The internal linking was implemented on a website created using a custom administration system with PHP and MySQL.

The “news” table, which contained the news, looked like this:

The “news” table

“Popular News” block

The Popular News block allows website visitors to see the most read (interesting) news articles published recently. The block is placed on every news page and contains the same links. The more views a page has and the more recent the news article was published, the higher the chances of it appearing in this block. The optimal number of news articles in such a block is five. This number is specific to the project and may vary experimentally for different projects.

The SEO purpose of this block is to expedite the indexing of promising news articles and give them maximum weight compared to other news pages on the website.

screenshots were taken from
screenshots were taken from

The task of selecting the top five popular news articles is accomplished as follows:

We refer to the “news table” with the only condition being that the “id” column (with auto-increment) is not equal to the variable $id (the value of this column for the open news article). This condition ensures that the current page we are on is excluded from the “Popular News” block. Then we proceed with sorting.

  • Using the CAST function, we convert the view count from the “viewcount” column to a SIGNED format (a 64-bit signed integer).
  • With the DATEDIFF function, we calculate the age of the news article (the difference between the current date and the “date” column, which stores the news article’s creation date).

We multiply the age of the news article by a decay coefficient, which is determined based on the frequency of news article publications. In this case, the coefficient is two. If it seems that too old news articles are appearing in the block or, conversely, news articles with a very low view count, this coefficient can be adjusted accordingly.

And then using DESC LIMIT, we select the desired number of news articles (in this case, 5) sorted in descending order. As a result, we obtain a selection of five popular news articles, which we output in the desired location using mysqli_fetch_array.

To create a cross-reference link to a promising news article using this block, we artificially increase the page view counter by entering the desired number of views in the viewcount column. However, if the number of views is reflected on our page and we want to display real, not artificially inflated data, it makes sense to create an additional column in the database to adjust the value.

screenshots were taken from
screenshots were taken from

The drawback of the mentioned algorithm becomes apparent when a large number of news articles are added to the database, as calculating the age of each news article takes a significant amount of time. Therefore, for news websites, it is worth adding an additional condition — the news article’s creation date should not be earlier than a certain date, which improves loading speed. However, if we are talking about large news websites with millions of records, it is worth caching the block: creating a separate database with popular news articles and updating it multiple times a day. Unlike the “related news” block, the list of popular news articles is not dependent on categories and tags, making it common to all news pages. The only thing to remember is not to display a link to the article on its own page. Therefore, the temporary database should contain one more entry than the number of news articles to be displayed. But if you want everything to be done for you, welcome to outsourcing with us!

So, using the MySQL admin panel, we copy the “news” database to the “popnews” database with the “structure only” option. Essentially, we have created a new empty database with the same columns. Then we fill it with six popular news articles (5 + 1). This script should be executed via cron.

When the page is loading, we don’t query the full “news” database, which contains a large number of records, but instead access the “popnews” database, which contains exactly six popular records and opens quickly.

If sorting is needed, we clarify:

“Related News” Block

This block is used for contextual interlinking. Unlike regular internal linking, where links can be set to arbitrary pages, contextual interlinking offers a deeper connection between the context of the text and the target pages.

The “Related News” block helps users to access additional information on the topic they are reading without the need to use the site’s search functionality. This improves navigation and enhances the user experience of the website.

From an SEO perspective, this block serves the purpose of giving additional weight to the latest news articles in each category and linking them together as a cohesive contextual block for search engine presentation.

The “Related News” block is implemented using tags.
The “tags” table, which contains the tags, looks like this:

The “Related News” block is implemented using tags

However, when calling the block, we don’t actually query this table. Instead, we only use the ID of each tag.

We store the list of tags for each specific news article in the “tags” column of the “news” table in the format of #1#2#3#4#, where each number between the hashtags represents a tag ID. It’s worth noting that, in general, this may not be the best way to organize a database, but for this specific solution, it is convenient enough. The news selection is conducted as follows. First, we establish the condition:

As a result, the variable $m will be a string like this: “tags LIKE ‘%#1#%’ OR tags LIKE ‘%#2#%’ OR tags LIKE ‘%#3#%’ OR tags LIKE ‘%#4#%’”. We use hashtags around the numbers to avoid false matches on multi-digit numbers. For example, %1% would match both 1, 10, and 21. Once we have established the condition, we find the latest news articles that have at least one tag in common with the current news article.

Caching, as in the previous block, is not advisable since each tag will have its own group of news articles, and there can be a large number of tags. However, the condition here is simpler and executes faster. As a result, we obtain a selection of four popular news articles, which we output in the desired location using mysqli_fetch_array.


For the promotion of a news website, the redistribution of page weight becomes a critically important factor. Natural link weight typically accumulates on the pages of “trending” news articles. However, news articles become outdated over time and lose relevance. Therefore, the task is to shift the weight towards new, recently created pages. This is where internal linking plays a key role, as it is extremely difficult to solve this task without it.


How keyword cannibalization can affect your business?

How keyword cannibalization can affect your business?

Aloha, friends! In this article, we will delve deeper into the concept of...

Understanding Semantic Markup: Basics and Impact on SEO

Understanding Semantic Markup: Basics and Impact on SEO

Hello everyone! In this article, we will talk about semantic markup and why it...

How to promote through key queries “… near me”

How to promote through key queries “… near me”

Greetings to everyone! Today we will talk about how to promote through search...

Scroll to upArrow Up