Ссылки Markdown не работают без https://?

Не изменилось ли что-то недавно со ссылками?

Когда вы пишете example.com в посте, он автоматически становится ссылкой в посте (то есть выглядит как ссылка, и при нажатии на неё вы переходите на этот сайт).

Однако, когда вы пишете

[ссылка](example.com)

ссылка

Это выглядит как ссылка, но на самом деле ссылки нет (то есть при нажатии на неё ничего не происходит).

Не изменилось ли это недавно? Кто-то на нашем форуме заметил, что у нас есть много таких ссылок, которые (теперь?) не работают.

ПРИМЕЧАНИЕ: Мой пример выше относится к использованию Markdown-редактора (если это не было очевидно). Когда я использую визуальный WYSIWYG-редактор и просто вставляю example.com в диалоговое окно ссылки, ссылка работает.

Вы уверены, что, например, [link](example.com) когда-либо работал? Я знаю, что разметка Markdown, содержащая относительные ссылки, например, [link](/u) к link списку пользователей на сайте, работает.

Я не уверен! Единственная подсказка, которую я могу назвать таковой, заключается в том, что я часто публиковал подобные ссылки на сайте именно так (то есть без https://), и это первый раз, когда кто-либо упоминает об этом. Возможно, никто никогда не переходил по моим ссылкам!

Согласны ли вы, что не следует требовать включения https:// в маркдаун-ссылке?

Я не вижу ничего в стандарте CommonMark, что упоминало бы это: CommonMark Spec

Не знаю? Честно говоря, раньше это меня никогда не беспокоило.

Вам известно о каких-либо других системах Markdown, которые делают то, что вы предлагаете?

Что ж, я только что попробовал это в issue на GitHub, и система восприняла мою ссылку как относительный путь, что, честно говоря, хуже, чем ничего не делать.

В Joplin ссылка без https воспринимается как реальная ссылка и ведёт в нужное место.

При вставке Markdown в редактор WordPress также создаётся относительная ссылка для сайта WP.

Я пытаюсь вспомнить, где ещё я использую Markdown.

С точки зрения педантизма, я считаю, что такое поведение допустимо. По одному лишь тексту недостаточно информации, чтобы отличить относительный путь от имени хоста.

Ссылка содержит текст ссылки (видимый текст) и цель ссылки (URI, являющийся целью ссылки)

example.com сам по себе не является валидным URI, хотя если ввести example.com отдельно, он превратится в ссылку. Это скорее конвенция, чем спецификация, ведь pineapple.belongson.pizza также является валидным именем хоста (по крайней мере, было, пока я не пропустил срок действия домена), но не автоматически превращается в ссылку.

Вы можете использовать:

  • корневой URI
    [rooted](/t/384591)
    rooted
  • относительный URI (с ./ или без)
    :information_source: это валидный markdown, но наш парсер это запрещает
    [relative](../../386082)
    relative
    [relative](./386082)
    relative
    [relative](386082)
    relative
  • абсолютный URI
    [absolute](https://www.example.com/foo.html)
    absolute
  • URI без схемы (похож на относительный, но явно относительный только к схеме)
    [schemeless](//www.example.com/foo.html)
    schemeless

Можно утверждать, что это правильное поведение. Без какой-либо привязки в начале это путь, относительный к текущему местоположению, так же как [link](./example.com).

Да, это было моим (надежным!) обоснованием того, почему markdown-ссылки должны делать то же самое. Но я постепенно принимаю тот факт, что этого не произойдет (и что этого никогда не было).

Я только что проверил на Reddit, и без https:// ссылка вообще не создается.

Кажется, единственное, что я всё ещё могу предложить, — это чтобы текст не выглядел как ссылка, если он не будет ею (что и происходит сейчас). Это кажется наименее полезным из всех вариантов, хотя лучше, чем относительная ссылка. Мне кажется, поведение Reddit, когда ссылка вообще не создаётся, может быть лучшим вариантом, если только система не сможет определить, что это должна быть относительная ссылка на что-то на самом сайте.

Мне нравится эта идея; возможно, стоит полностью убрать ссылку в итоговом опубликованном посте и добавить предупреждение в предпросмотре редактора.

@product-managers ?

Хм… Не то чтобы это была большая проблема, но я тоже привык использовать что-то вроде [foo]() для иллюстраций, что отображается как foo.

Мне кажется, проблема здесь в несоответствии ожиданий из-за настройки сайта «linkify». Не уверен, как лучше всего разобраться с этим, но я передам эту информацию коллегам, которые думают о таких пограничных случаях в редакторе, чтобы они хотя бы учитывали это при рассмотрении.

У меня такого расхождения нет, но я понимаю его.

Я ожидаю, что Markdown будет делать именно то, что я говорю: [ссылка] означает, что следующее должно быть отрисовано как ссылка; мне решать, поместить ли туда корректный URL.

Я ожидаю, что редактор сделает немного магии: это похоже на URL, поэтому я отмечу его как ссылку.

Для меня это стало естественным, но я определённо вижу потенциал для путаницы. Возможно, подобную магию можно применить для проверки формата ссылок Markdown перед их превращением в активные ссылки.

Если кто-то хочет ссылку исключительно в демонстрационных целях, можно использовать якорь

[foo](#nowhere)

foo

(всё ещё относительная ссылка, но якорная ссылка относительно текущей страницы)

:+1:

Конечно. Но я думаю, что большинство пользователей ожидают, что [link](example.com) создаст ссылку на example.com. Ввод example.com в адресную строку браузера работает. И просто ввод этого текста в сообщение тоже работает.

Это именно та магия, которую я ищу :mage: