Коротко — проблема не в rel="nofollow" и не в том, что ссылка «статична». Явный и надёжный выход — не давать поисковым ботам возможность получать страницу по адресу с «tel:…» (отдавать 404/410 или 301 на канонический URL) и/или исправить сам HTML так, чтобы парсеры не воспринимали это как ссылку на путь вашего сайта. Ниже — план действий и конкретные варианты исправления.
Почему это происходит
- Бот запрашивает URL вида /catalog/tel:8800... — сервер возвращает ту же страницу /catalog, получается дубликат и поисковик исключает одну из версий.
- rel="nofollow" не мешает ботам запрашивать URL — он только уменьшает «вес» ссылки.
- Disallow: /tel: не сработал, потому что у вас путь содержит /catalog/tel:… — правило не совпало (robots.txt сравнивает префиксы).
Что можно сделать (по приоритету)
1) Самое надёжное — на сервере ловить запросы с "tel:" в пути и возвращать 404/410 или делать 301 на каноническую страницу
- Nginx (в server{}):
if ($request_uri ~ "tel:") { return 410; }
— это сразу прекратит индексацию таких URL и поисковики перестанут видеть дубликаты.
- Apache (.htaccess):
RewriteCond %{REQUEST_URI} tel:
RewriteRule .* - [G]
— выдаёт 410 Gone.
2) Альтернатива — редирект 301 с /.../tel:... → правильный URL (или на корень), если хотите явно указывать канонику.
3) Правильно блокировать через robots.txt (как временная мера)
- Чтобы закрыть любые URL, содержащие "tel:" в любом месте, используйте шаблон (Yandex/Google поддерживают *):
User-agent: *
Disallow: /*tel:
Но: robots.txt запрещает обход/сканирование, но не всегда удаляет URL из индекса, если на него есть ссылки. Лучше совмещать с пунктом 1.
4) Исправить отображение номера в HTML
- Убедитесь точно в исходнике: href="tel:+7800..." (с + и без лишних пробелов/слэшей). Проверьте отсутствие base href, который может влиять на разрешение ссылок.
- Если хотите полностью исключить возможность парсинга, можете не использовать href, а сделать кликабельность через JS:
<span class="phone" data-tel="+7800...">8 (800) ...</span>
и навесить onclick для мобильных: location.href = 'tel:' + this.dataset.tel;
(Боты, не выполняющие JS, тогда не увидят «ссылку».)
5) Канонические теги
- На страницах ставьте rel="canonical" на главный адрес (/catalog). Если бот всё же скачивает /catalog/tel:..., canonical укажет, какую версию считать основной.
Диагностика — что проверить прямо сейчас
- Просмотрите исходный код страницы (view-source) и точно скопируйте значение href — нет ли опечаток, лишних слэшей, base href.
- Попробуйте вручную запросить URL, который в отчёте (например https://site.ru/catalog/tel:8800…) — какая ответ сервера (200/301/404)? Если 200 — отсюда и проблема.
- В Yandex.Webmaster можно посмотреть, когда бот заходил по такому адресу и какой код ответа получал.
Резюме
- Лучшее решение — настроить сервер: при запросе путей с "tel:" отдавать 404/410 или редиректить на правильную страницу. Это быстро и надёжно решит проблему с дубликатами.
- Дополнительно: проверить HTML (правильный href), поставить canonical и/или временно закрыть с помощью robots.txt/*tel:.