According to Google, setting ‘nofollow’ for internal links to reduce the crawling of unwanted pages does little. It is better to rely on tools such as robots.txt and canonical links.
Internal links don’t have to be ‘nofollowed’ – not even to reduce the crawling of unwanted pages. John Müller explained in the Google Search Central SEO Office Hours of June 3rd that internal links can be set to ‘nofollow’, but that doesn’t make sense in most cases.
It is better to point to the URLs to be indexed using canonical links. For URLs that should never be crawled, robots.txt is the best choice. It is important to consider whether it is just a matter of a specific preference for URLs that Google should index, or whether Google should never crawl certain URLs, because this creates too much load on the server, for example. In the first case, canonical links are suitable, in the second case, blocking via robots.txt is the right choice.
In order to recognize a canonical link to another URL, Google must be able to crawl a URL. Over time, Google then concentrates on the URL to which the canonical link points when crawling, Müller continues.
Incidentally, ‘nofollow’ for internal links is not suitable for avoiding the indexing of certain pages, because Google can also come across the pages via other links in order to then index them. Optimizing the link structure of a website using ‘nofollow’ is also not recommended because the effects of such measures are minimal.