我正在使用Discourse论坛软件。与目前的状态一样,Discourse以两种方式提供与主题的链接,最后有无邮编号。
示例:
forum.domain.com/t/some-topic/23
forum.domain.com/t/some-topic/23/5
第一个是我想要的,第二个我想不在论坛中显示。
我已在话语论坛上撰写a post about it,但没有收到Regex在管理部分的固定链接规范化输入字段中的答案。
我被告知有一个选项可以使用永久链接规范化这样做(这是在Regex输入文本下管理员显示的一个例子,我没有写它):
permalink normalizations
Apply the following regex before matching permalinks,
for example: /(topic.)\?./\1 will strip query strings from topic routes.
Format is regex+string use \1 etc. to access captures
我不知道我应该使用什么样的正则表达式,以便从链接中删除帖子编号的数值。我只需要主题链接。
这是routes.rb路由库,这是permalink.rb库(我认为永久链接库应该有助于更好地了解如何实现此目的)。我不知道如何处理这个,因为我似乎需要一些Discourse路由的知识来使它工作。例如,我不明白为什么(topic.)
是正则表达式的一部分,这是什么意思,所以他们的例子并没有帮助我找到解决方案。
在admin中我有一个输入字段,我需要在其中放置规范化正则表达式代码。
我需要Regex的帮助。 我需要正则表达式来处理所有主题。
我尝试过无法正常工作
的事情:/(\/\d+)\/\d+$/\1
/(t/[^/]+/\d+).*/\1
/(\/\d+)\/[0-9]+$/\1
/(\/\d+)\/[0-9]+/\1
/(\/\d+)\/\d+$/\1/
/(forum.domain.com(\/\w+)*\/\d+)\/\d+(?=\s|$)/\1
注意:永久链接规范化输入字段将字符|
视为分隔符,以分隔多个正则表达式。
答案 0 :(得分:2)
我认为这可能是您要设置在de settings字段中的表达式:
/(t\/.*\/\d+)(\/\d+)/\1
你可以看到它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
答案 1 :(得分:0)
我并没有真正理解你的问题,但是如果我做对了,你说你想要最后的链接/某些数字,但不要与/ some-number /最后的一些数字。如果是这种情况,正则表达式是:
forum\.domain\.com\/t\/[^0-9\/]+\/\d{1,9}$
您可以替换'论坛'使用您的论坛名称和'域名'使用您的域名。
答案 2 :(得分:0)
这将删除另一个"/<digits>"
之后的"/<digits>"
跟踪:
/(forum.domain.com(\/\w+)*\/\d+)\/\d+(?=\s|$)/\1