Почему в поиске отображается не та версия страницы, если я правильно указал canonical? Потому что canonical — это рекомендация, а не жёсткий запрет: поисковые системы учитывают его, но при конфликте сигналов могут выбрать другой URL. Если внутренние ссылки, карта сайта или внешние источники активнее ссылаются на альтернативный адрес, Google посчитает его более значимым и проигнорирует вашу разметку.
Когда canonical не срабатывает, проверьте, нет ли противоречий: не закрыт ли нужный URL в robots.txt, не отличается ли он от указанного регистром букв или слешем. Также убедитесь, что на странице нет дублирующего тега rel=canonical с самоссылкой — из-за него робот запутывается и выбирает исходный документ. Если вы продвигаете страницу с параметрами вроде ?sort=price, обязательно закрывайте такие фильтры в robots.txt, иначе поисковик склеит их с основной версией не в вашу пользу.