Good old-fashioned links
Some people may have noticed that all the links on my site were not real links: they pointed only to a section, while I showed subsections through # anchor links.
I can no longer remember exactly why I did that — maybe I wanted to do something unusual, or maybe I could not configure an htaccess rule correctly — but the fact remains that I lived with broken links for more than a year, and search engines indexed them very poorly.
Today I finally deployed the long-awaited site update that changes all links on the site. Hash links still work, but from now on all links look normal and correct. We’ll see what effect this has on search visibility.