Вопрос или проблема
В настоящее время я настраиваю различные метатеги для социального обмена на веб-сайте, который использует IDN (интернационализированное доменное имя).
Я пришел к осознанию того, что URL, показываемый конечному пользователю в посте, не является фактическим IDN, а закодированным. Порассуждав над этим, я пришел к такому выводу, прочитав вики по IDN и фактический механизм кодирования, использующийся, пуникод.
Так что, по моему пониманию, это нормальное поведение? Если это нормальное поведение, есть ли способ предотвратить это?
Причина этого вопроса заключается в том, что для меня вид закодированного URL кажется чем-то несуразным, и конечный пользователь может избежать нажатия на него.
У меня была такая же проблема. То, что работало для меня, – это использовать только ‘title’ и добавить URL в аргумент ‘text’. Упустите аргумент URL, так как он всегда преобразуется в URL ACE.
Вы можете протестировать это по https://w3c.github.io/web-share/demos/share-files.html
Ответ или решение
К сожалению, на данный момент предотвратить отображение Punycode (ASCII-Compatible Encoding, ACE) вместо Internationalized Domain Name (IDN) в постах на Facebook невозможно. Это нормальное поведение платформы, которое связано с тем, что Facebook автоматически преобразует URL с IDN в их Punycode-эквиваленты для обеспечения совместимости и корректной обработки.
IDN включает в себя символы, которые не входят в стандартный набор ASCII, и для их передачи через системы, работающие только с ASCII, используется Punycode. Например, домен «example.com» на кириллице будет отображаться в виде «xn--80ak6aa92e.com». Это означает, что любой контент, размещаемый в Facebook, который содержит ссылку на ваш IDN, будет автоматически конвертирован в Punycode.
Опции, которые вы можете рассмотреть:
-
Настройка метатегов: Вы можете использовать Open Graph метатеги, чтобы пытаться улучшить внешний вид постов в социальной сети. В частности, вы можете использовать метатег
og:url
, который ссылается на ваш IDN, однако в настоящее время он может также быть преобразован в Punycode. -
Изменение способа публикации: Как уже упоминалось, некоторые пользователи сообщали, что добавление URL в
text
-аргумент, а не вurl
-аргумент при использовании API Facebook для публикации, создает возможность отображения вашего IDN. Это может быть не всегда совместимо с другими системами и требует тестирования. -
Проверка масштабируемости: Поскольку Facebook периодически обновляет свою политику и функциональность, рекомендуем следить за изменениями или новыми возможностями, которые могут появиться в будущем в их документации, а также в сообществе разработчиков.
-
Информирование пользователей: Если отображение Punycode не удается изменить, вам стоит подумать о том, как вы можете добавить информацию или инструкции для пользователей, чтобы они были готовы к различиям в отображении URL.
Заключение:
На данный момент не существует способа полностью предотвратить отображение Punycode для международных доменных имен в Facebook. Тем не менее, путем экспериментов с метатегами и методами публикации вы можете попытаться добиться лучшего результата. Рекомендуется также следить за обновлениями Facebook по этой теме для получения актуальной информации.