{"id":32,"date":"2024-09-02T09:00:00","date_gmt":"2024-09-02T09:00:00","guid":{"rendered":"https:\/\/unstale-test.pbnos.fr\/?p=32"},"modified":"2025-12-19T13:22:56","modified_gmt":"2025-12-19T13:22:56","slug":"internal-linking-at-scale-rules-that-survive-a-migration","status":"publish","type":"post","link":"https:\/\/unstale-test.pbnos.fr\/?p=32","title":{"rendered":"Internal Linking at Scale: Rules That Survive a Migration"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Internal links are the only ranking signal you control completely. Nobody has to agree to give you one, no outreach email is involved, and the entire graph is yours to shape. They are also the first thing to break when a site is restructured, which is why most sites have a link graph that reflects a plan from three redesigns ago.<\/p>\n\n<h2 class=\"wp-block-heading\">Anchors carry the meaning<\/h2>\n\n<p class=\"wp-block-paragraph\">An anchor that reads &#8220;click here&#8221; tells a crawler nothing about the destination. An anchor that reads &#8220;our guide to database migration&#8221; tells it what the target page is about, in the words of the page doing the linking, which is exactly the kind of third-party description that is hard to fake at scale.<\/p>\n\n<p class=\"wp-block-paragraph\">The failure mode in the other direction is using the identical anchor every time. Fifty links all reading &#8220;content refresh tool&#8221; pointing at the same page looks like a template, because it is one. Vary the phrasing the way a human writer naturally would, and let some of the links be partial matches or plain descriptions.<\/p>\n\n<h2 class=\"wp-block-heading\">One link per target per page<\/h2>\n\n<p class=\"wp-block-paragraph\">If a page links to the same destination four times, the first link is the one that carries the anchor. The rest add clutter for the reader and nothing for the crawler. Picking the single best placement, usually the first natural mention in the body, is worth more than sprinkling repeats through the article.<\/p>\n\n<h2 class=\"wp-block-heading\">Depth is the metric that matters<\/h2>\n\n<p class=\"wp-block-paragraph\">Click depth, meaning the number of clicks from the homepage to a given page, predicts crawl frequency better than almost anything else you can measure on your own site. A page five clicks deep is a page that gets visited rarely and refreshed in the index slowly. Pulling important pages up to two or three clicks is usually a matter of adding them to a hub page that already sits near the top.<\/p>\n\n<p class=\"wp-block-paragraph\">Run a crawl and sort by depth. The pages you care about that sit deepest are your work list, and the fix is almost always structural rather than editorial.<\/p>\n\n<h2 class=\"wp-block-heading\">What breaks during a migration<\/h2>\n\n<p class=\"wp-block-paragraph\">Internal links written as absolute URLs against the old domain survive a migration only because a redirect catches them, and a redirect chain that starts inside your own site is a self-inflicted delay on every crawl. After any restructure, the job is to rewrite internal links to their final destination rather than leaving the redirects to do it.<\/p>\n\n<p class=\"wp-block-paragraph\">The same applies to links pointing at pages that no longer exist. A 404 reached from your own navigation is worse than one reached from an external site, because it says the site does not know its own shape. Crawl your own domain, list the internal 404s, and fix them at the source rather than redirecting each one individually.<\/p>\n\n<h2 class=\"wp-block-heading\">Automating it without making it worse<\/h2>\n\n<p class=\"wp-block-paragraph\">Automatic internal linking has a bad reputation because the first generation of plugins matched keywords blindly and produced pages where the same phrase linked somewhere different in every paragraph. The mechanism was not the problem. The absence of any judgement about relevance was.<\/p>\n\n<p class=\"wp-block-paragraph\">A useful automation proposes links and lets a human accept them, caps the number per page so no article turns into a link farm, refuses to place an anchor inside a heading or an existing link, and never links the same destination twice from one page. Those four rules remove most of the damage while keeping the part that saves time, which is finding the candidates in the first place.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Internal links are the only ranking signal you control completely. Nobody has to agree to give you one, no outreach email is involved, and the entire graph is yours to shape. They are also the first thing to break when a site is restructured, which is why most sites have a link graph that reflects [&hellip;]<\/p>\n","protected":false},"author":0,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-32","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/unstale-test.pbnos.fr\/index.php?rest_route=\/wp\/v2\/posts\/32","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unstale-test.pbnos.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unstale-test.pbnos.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/unstale-test.pbnos.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=32"}],"version-history":[{"count":1,"href":"https:\/\/unstale-test.pbnos.fr\/index.php?rest_route=\/wp\/v2\/posts\/32\/revisions"}],"predecessor-version":[{"id":35,"href":"https:\/\/unstale-test.pbnos.fr\/index.php?rest_route=\/wp\/v2\/posts\/32\/revisions\/35"}],"wp:attachment":[{"href":"https:\/\/unstale-test.pbnos.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=32"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unstale-test.pbnos.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=32"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unstale-test.pbnos.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=32"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}