我已经深入研究了我们的代码库,看起来这个错误比较简单,但我还是想确认一下我的假设。
我们有一个名为 slug_generation_method 的站点设置,必须将其从默认的 ascii 值更改为 encoded 才能触发此错误。当您更改此站点设置时,我们会清除所有 slug 并重新生成它们。
我不理解的是,为什么当站点设置设置为“encoded”时,我们会生成如下 slug:
[3] pry(main)> SiteSetting.slug_generation_method
=> "encoded"
[4] pry(main)> Slug.for(t.slug)
=> "キノの旅-home-thread-intermediate-book-club"
而我原本以为“encoded”意味着类似以下内容:
[5] pry(main)> CGI.escape(Slug.for(t.slug))
=> "%E3%82%AD%E3%83%8E%E3%81%AE%E6%97%85-home-thread-intermediate-book-club"
这似乎来自
当主题 slug 不匹配时,来自表的原始 slug 会返回在 301 响应的 Location 头中,依我看来,我们应该在其中返回一个有效的 URL。