规范化 Discourse 论坛中主题链接的正则表达式

Regex to normalize topic links in Discourse forum

我正在使用 Discourse 论坛软件。与当前状态一样,Discourse 以两种方式显示主题链接,末尾有和没有 post 数字。

示例:

forum.domain.com/t/some-topic/23
forum.domain.com/t/some-topic/23/5

第一个是我想要的,第二个是我希望论坛里根本不显示的

我已经在 Discourse 论坛上写了 a post about it 但没有收到关于在管理部分的永久链接规范化输入字段中输入什么正则表达式的答案。

有人告诉我有一个选项可以像这样使用永久链接规范化来做到这一点(这是在 Regex 输入文本下的管理员中显示的一个示例,我没有写它):

permalink normalizations

Apply the following regex before matching permalinks,
for example: /(topic.)\?./ will strip query strings from topic routes.
Format is regex+string use  etc. to access captures

我不知道应该使用什么正则表达式来从链接中删除 post 数字的数值。我只需要它用于主题链接。

这是 routes.rb routing library and this is the permalink.rb 库(我认为 永久链接库 应该有助于更好地了解如何实现这一点)。我不知道如何处理这个问题,因为我似乎需要一些关于 Discourse 路由的知识才能使其工作。例如,我不明白为什么 (topic.) 是正则表达式的一部分,它是什么意思,所以他们的例子并不能帮助我找到解决方案。

在管理员中我有一个输入字段,我需要在其中输入规范化正则表达式代码。

我需要有关正则表达式的帮助。 我需要正则表达式来处理所有主题

我试过的东西没用

/(\/\d+)\/\d+$/

/(t/[^/]+/\d+).*/

/(\/\d+)\/[0-9]+$/

/(\/\d+)\/[0-9]+/

/(\/\d+)\/\d+$//

/(forum.domain.com(\/\w+)*\/\d+)\/\d+(?=\s|$)/

注意: 永久链接规范化输入字段将字符 | 视为分隔多个 Regex 表达式的分隔符。

我并没有真正理解你的问题,但如果我没听错,你是说你想在末尾使用 /some-number 链接,而不是在 /some-number/some-number 链接结尾。如果是这样,则正则表达式为:

forum\.domain\.com\/t\/[^0-9\/]+\/\d{1,9}$

您可以将 'forum' 替换为您的论坛名称,将 'domain' 替换为您的域名。

这将在另一个 "/<digits>":

之后删除尾随 "/<digits>"
/(forum.domain.com(\/\w+)*\/\d+)\/\d+(?=\s|$)/

我认为这可能是您要放入设置字段中的表达式:

/(t\/.*\/\d+)(\/\d+)/

可以看到working on Rubular.

但是,the code that generates the url 没有使用规范化代码,因此表达式被忽略。

您可以尝试规范化永久链接:

def last_post_url
  url = "#{Discourse.base_uri}/t/#{slug}/#{id}/#{posts_count}"
  url = Permalink.normalize_url url
  url
end