# 重复链接检测忽略锚点

**URL:** <https://meta.discourse.org/t/duplicate-link-detection-ignores-anchor/166920>\
**Category:** Bug\
**Created:** [2020年十月11日 20:39 UTC](https://meta.discourse.org/t/duplicate-link-detection-ignores-anchor/166920 "2020-10-11T20:39:33Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![joshtriplett](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/joshtriplett/32/196763_2.png) [@joshtriplett](https://meta.discourse.org/u/joshtriplett)\
**Post date:** [2020年十月11日 20:39 UTC](https://meta.discourse.org/t/duplicate-link-detection-ignores-anchor/166920/1 "2020-10-11T20:39:33Z")

</div>

Zulip 链接到特定讨论时，会在锚点中放入大量信息，而锚点之前的唯一内容就是顶级域名（例如 `rust-lang.zulipchat.com`）。Discourse 在进行重复链接检测时似乎忽略了锚点，从而导致出现如下消息：

> 看起来您指向 **[rust-lang.zulipchat.com](http://rust-lang.zulipchat.com)** 的链接已在主题中由 **@josh** 在 [2020 年 6 月 3 日的一条回复](https://users.rust-lang.org/t/twir-quote-of-the-week/328/886) 中发布过——您确定要再次发布吗？

该链接的锚点不同，因此不应被视为重复。

---

<div class="post-metadata">

**Author:** ![eviltrout](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eviltrout/32/5275_2.png) [@eviltrout](https://meta.discourse.org/u/eviltrout)\
**Post date:** [2020年十二月3日 20:09 UTC](https://meta.discourse.org/t/duplicate-link-detection-ignores-anchor/166920/2 "2020-12-03T20:09:54Z")

</div>

这值得商榷。我认为，即使锚文本不同，反复链接到同一页面也应发出警告。

---

<div class="post-metadata">

**Author:** ![joshtriplett](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/joshtriplett/32/196763_2.png) [@joshtriplett](https://meta.discourse.org/u/joshtriplett)\
**Post date:** [2020年十二月8日 08:28 UTC](https://meta.discourse.org/t/duplicate-link-detection-ignores-anchor/166920/3 "2020-12-08T08:28:59Z")

</div>

对于像 Zulip 这样将_所有_信息都放入锚点的 Web 应用，这实际上会使 Discourse 将指向该应用的每个链接视为重复链接。

---

<div class="post-metadata">

**Author:** ![eviltrout](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eviltrout/32/5275_2.png) [@eviltrout](https://meta.discourse.org/u/eviltrout)\
**Post date:** [2020年十二月8日 19:58 UTC](https://meta.discourse.org/t/duplicate-link-detection-ignores-anchor/166920/4 "2020-12-08T19:58:01Z")

</div>

我查看了一下，情况相当奇怪，但我无法复现。在规范化链接时，没有任何明显的代码会剥离 URL 的哈希部分。我们确实会移除尾部斜杠，并且我发现了一个 bug：我们本应在 URL 中忽略大小写，但实际上并没有。

> <https://github.com/discourse/discourse/pull/11436>
>
> The server side does this so the same link on the client side with any
> upper ca…se letters does not warn as a duplicate.

在您提供的示例中，链接似乎被单框化为一个 `/login` 链接。如果是这样，那么所有登录链接都会相同。这是问题所在吗？

---

<div class="post-metadata">

**Author:** ![joshtriplett](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/joshtriplett/32/196763_2.png) [@joshtriplett](https://meta.discourse.org/u/joshtriplett)\
**Post date:** [2020年十二月8日 20:50 UTC](https://meta.discourse.org/t/duplicate-link-detection-ignores-anchor/166920/5 "2020-12-08T20:50:36Z")

</div>

我认为这是一个独立的问题。底层 URL 是独立的，我不确定为什么预览框会将其更改为 `/login`。

不过，我现在也无法复现此问题了。

---

<div class="post-metadata">

**Author:** ![eviltrout](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eviltrout/32/5275_2.png) [@eviltrout](https://meta.discourse.org/u/eviltrout)\
**Post date:** [2020年十二月9日 15:12 UTC](https://meta.discourse.org/t/duplicate-link-detection-ignores-anchor/166920/6 "2020-12-09T15:12:53Z")

</div>

好消息，我先暂时关闭。

---

<div class="post-metadata">

**Author:** ![eviltrout](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eviltrout/32/5275_2.png) [@eviltrout](https://meta.discourse.org/u/eviltrout)\
**Post date:** [2020年十二月9日 15:12 UTC](https://meta.discourse.org/t/duplicate-link-detection-ignores-anchor/166920/7 "2020-12-09T15:12:56Z")

</div>


