URL 中包含日语的主题,若 URL 不完全匹配则不会重定向

这是否意味着当人们从编码格式切换到 ASCII 时,不会重新生成 URL 别名?如果是这样,那么您之前编写的用于清除 URL 别名的一次性处理过程似乎无法适用于这些情况。

1 个赞

你好,

该拉取请求并未完全解决问题。如果 slug 中包含 + 号,则会显示 400 错误。
为确认这一点,我已将 slug 生成方式切换回“无”,编辑了标题并移除了其中的 + 号,然后重新切换为“编码”模式,400 错误随之解决。

具体情况是:当标题中包含 加号 时,会返回 400 错误。(可能还有其他字符也会导致此问题,目前我仅测试了 + 号。)

谢谢!

5 个赞

这是发生在主题 slug 还是分类 slug 中?

4 个赞

主题标识。尚未在分类中测试。

3 个赞

encoded 缩写生成器会移除所有 + 符号,因此我不明白你是如何得到那个结果的:

我刚刚在本地测试过,它们对我来说被正常移除了。

3 个赞

也许在您本地环境中情况不同。
我的网站语言是波斯语。您能否切换到波斯语后再进行测试?

要复现此问题,请创建一个主题,标题如下:
گربه های ایرانی + از نژاد خوبی برخوردار هستند

我的网址 slug 变成了不可读的格式,并返回 400 错误:

https://domain.ltd/t/%D8%A7%DA%A9%D8%A7%D9%86%D8%AA-%D9%BE%D8%B1%D9%85%DB%8C%D9%88%D9%85-%D9%88%D8%A8-%D8%B3%D8%A7%DB%8C%D8%AA-%D9%85%D9%88%D8%B2-%D8%B1%D8%A7%DB%8C%DA%AF%D8%A7%D9%86-%D8%A7%D8%B4%D8%AA%D8%B1%D8%A7%DA%A9-%D8%B4%D8%AE%D8%B5%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%DA%A/2067/40

2 个赞

只有你没有使用“og”的 +,而是使用了另一个看起来相似的波斯符号吗?你能分享一个能复现问题的字符串吗?

3 个赞

我编辑了之前的回复。确认一下,这是一个 +。

2 个赞

这很奇怪,对我来说,该标识符变成了

%DA%AF%D8%B1%D8%A8%D9%87-%D9%87%D8%A7%DB%8C-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86%DB%8C-%D8%A7%D8%B2-%D9%86%DA%98%D8%A7%D8%AF-%D8%AE%D9%88%D8%A8%DB%8C-%D8%A8%D8%B1%D8%AE%D9%88%D8%B1%D8%AF%D8%A7%D8%B1-%D9%87%D8%B3%D8%AA%D9%86%D8%AF

你确定你运行的是最新版本并刷新了页面吗?

2 个赞

我运行的是最新版本。

我现在有些困惑。我创建了一个与损坏 slug 主题条件相同的新主题,它运行正常。正如你所说,可能问题并非由 + 号引起。

请允许我花些时间安装一个测试环境并进行一些测试。我会在此主题中更新更多信息。

谢谢

2 个赞

你从分享按钮获取的 URL 是那个吗?之前存在双重编码问题,我刚刚在最新的合并中修复了它。

2 个赞

查看此屏幕录像。

3 个赞

哦,我明白问题所在了。它只出现在超过 255 个字符的 slug 上,而且只在 66% 的情况下发生。我明天会着手修复。

12 个赞

我们也会遇到同样的问题:

例如:Γνώμη για αγορά μπουζουκιού μέσω ίντερνετ και εκτίμηση - #2 από nikos_politis - Μουσικά όργανα - Ρεμπέτικο Φόρουμ

奇怪的是,只有在从“最新”列表中点击进入主题时才会出现此问题。如果从其他主题链接到该页面,则一切正常。

完整链接:
https://rembetiko.gr/t/%CE%B3%CE%BD%CF%89%CE%BC%CE%B7-%CE%B3%CE%B9%CE%B1-%CE%B1%CE%B3%CE%BF%CF%81%CE%B1-%CE%BC%CF%80%CE%BF%CF%85%CE%B6%CE%BF%CF%85%CE%BA%CE%B9%CE%BF%CF%85-%CE%BC%CE%B5%CF%83%CF%89-%CE%B9%CE%BD%CF%84%CE%B5%CF%81%CE%BD%CE%B5%CF%84-%CE%BA%CE%B1%CE%B9-%CE%B5%CE%BA%C/38511/2

同样的问题,那个 slug 超过了 255 个字符。

4 个赞

在调查过程中,我发现有些类别根本无法加载。

我发现我们遇到了这类错误:

URIError: URI malformed
    at decodeURIComponent (<anonymous>)
    at a (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:16:31208)
    at Array.map (<anonymous>)
    at o (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:16:31136)
    at P.recognize (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:17:5729)
    at t.applyToState (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:17:22054)
    at u.n.getTransitionByIntent (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:17:24304)
    at u.n.transitionByIntent (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:17:23609)
    at u.n.doTransition (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:17:25611)
    at u.n.transitionTo (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:17:30132)
TypeError: Cannot read property 'responseJSON' of undefined
    at n.error (https://rembetiko.gr/assets/application-5d69c42124908eb6b41549efae9db9b1df26741f3a45075c6bfd603bb5267a42.js:71:604)
    at n.C (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:8:17733)
    at u.c.triggerEvent (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:8:21275)
    at e.t.trigger (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:17:13392)
    at u.c.transitionDidError (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:8:21548)
    at https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:17:11836
    at f (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:18:1126)
    at T (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:18:2503)
    at E (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:18:2402)
    at y (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:18:1896)
```\n这两个错误是否有关联?

(你可以在此自行查看:https://rembetiko.gr/c/%CE%AC%CE%BB%CE%BB%CE%B1-%CE%B8%CE%AD%CE%BC%CE%B1%CF%84%CE%B1/%CE%BC%CE%B9%CE%BA%CF%81%CE%AD%CF%82-%CE%B1%CE%B3%CE%B3%CE%B5%CE%BB%CE%AF%CE%B5%CF%82)
2 个赞

@Arta_S@chrispanag,还有两个修复即将发布,一个针对长标题,另一个针对子类别。

以及

8 个赞

升级后,我们仍然收到这个错误 :confused:

2 个赞

在这种情况下,您需要重新生成 URL 别名。请尝试以下操作:

cd /var/discourse
./launcher enter app
rails c
Topic.update_all(slug: nil)
exit
exit
exit
6 个赞

距离上次更新两天前,我遇到了两个问题:

  1. 某些主题中的 URL 返回 400 错误请求
  2. 某些主题中的时间线消失

托管平台:Discourse ‘standard-plan’

能否请您帮忙?

抱歉,我的英语写得不好。

2 个赞