Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

内部/外部リンクの判定基準をカスタム可能にする #453

Open
mkobayashime opened this issue Jul 18, 2023 · 2 comments
Open
Labels
enhancement 機能以外の改善

Comments

@mkobayashime
Copy link

mkobayashime commented Jul 18, 2023

課題

zenn-markdown-html package の markdownToHtml 関数において、リンク文字列には mdLinkAttributes plugin によって各種属性が付与されています
その1つに rel="nofollow noopener noreferrer" があり、これは外部リンクに対して付与することが意図されているようです

ここで「外部」リンクか否かは現状 zenn.dev ドメイン配下ページかどうかで判定されており、

return href.match(/^(?:https:\/\/zenn\.dev$)|(?:https:\/\/zenn\.dev\/.*$)/);

  • zenn.dev 配下ページには rel="nofollow..." が付与されない
  • ↑以外のページには付与される

という挙動となっていますが、これは Zenn 以外のサイトで利用するには不都合が生じうるものです

具体例として、example.com にて公開するサイトに当該パッケージを用いる場合、「内部」リンクであるはずの https://example.com/foobar へのリンクに rel="nofollow" が付与されてしまいます
これは SEO 上不都合な挙動です

そこで、この「内部リンクか否か」の判定基準をユーザがカスタムできるようなオプションを提供することを提案します

解決策案

markdownToHtmloptions にて内部リンクか否かを判定する正規表現(または関数 (url: string) => boolean ?)を受け取るようにする

@cm-igarashi-ryosuke
Copy link
Member

issueありがとうございます。確かにその通りですね。

現状、リソースの集中のため、zenn-editor(zenn-markdown-html含む)への機能追加は、Zenn本体やエコシステムに関わるものに限定しております。また、一般利用のためのオプションを追加すると、おそらくこれ以外にもたくさんのオプションが必要になることから、慎重に判断しています。

このような事情のため、面倒ではありますが、markdownToHtmlで生成されたHTMLを再度加工するなどして回避していただければと思います。

@mkobayashime
Copy link
Author

@cm-igarashi-ryosuke
ご事情理解いたしました
Issue を閉じるか残すかについてはお任せしたく存じます🙏

@cm-igarashi-ryosuke cm-igarashi-ryosuke added the enhancement 機能以外の改善 label Jul 19, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement 機能以外の改善
Projects
None yet
Development

No branches or pull requests

2 participants