Perché il mio sito genera ancora slug codificati anche se SiteSetting.slug_generation_method = none

Qualche giorno fa, ho impostato SiteSetting.slug_generation_method su encoded, cercando di avviare un canale di chat (ma senza abilitare affatto il plugin di chat). Ho visto che l’URL era brutto in locale cinese, quindi ho reimpostato SiteSetting.slug_generation_method su none.

Tuttavia, il sito sta ancora generando slug nei nuovi argomenti (non tutti, ma alcuni). Non ho idea di cosa ci sia di sbagliato. Ho provato a eseguire Topic.update_all(slug: "topic") o Topic.update_all(slug: nil) per aggiornare lo slug, ma alcuni slug degli argomenti sono ancora titoli codificati.

1 Mi Piace

Un altro problema è che non riesco ad accedere a un argomento con uno slug codificato, ottenendo ERR_TOO_MANY_REDIRECTS. Questo tipo di argomenti con slug codificati vengono generati dopo aver impostato SiteSetting.slug_generation_method su none.

Il log mostra

Started GET "/t/%E6%88%91%E4%B9%9F%E8%83%BD%E6%89%BE%E5%88%B0%E5%B1%9E%E4%BA%8E%E6%88%91%E7%9A%84%E9%98%B3%E5%85%89%E5%A4%A7%E7%94%B7%E5%AD%A9%E5%90%97/112562/39" for 10.182.185.76 at 2022-11-23 19:35:09 +0800
  Rendered text template (Duration: 0.0ms | Allocations: 1)
Processing by TopicsController#show as HTML
  Parameters: {"slug"=>"我也能找到属于我的阳光大男孩吗", "topic_id"=>"112562", "post_number"=>"39"}
Redirected to https://my-domain/t/%E8%BF%98%E6%9C%89%E4%B8%8D%E5%88%B040%E5%A4%A9%EF%BC%8C2022%E5%B9%B4%E5%B0%B1%E7%BB%93%E6%9D%9F%E4%BA%86%EF%BC%8C%E8%AF%B7%E7%94%A8%E4%B8%80%E4%B8%AA%E5%AD%97%E6%88%96%E8%80%85%E8%AF%8D%E8%AF%AD%E6%9D%A5%E8%AF%84%E4%BB%B7%E5%AE%83%E5%90%A7/112489
Completed 301 Moved Permanently in 176ms (ActiveRecord: 0.0ms | Allocations: 19880)

Ho letto il codice, forse slugs_do_not_match restituisce true, dato che %E6%88%91%E4%B9%9F%E8%83%BD%E6%89%BE%E5%88%B0%E5%B1%9E%E4%BA%8E%E6%88%91%E7%9A%84%E9%98%B3%E5%85%89%E5%A4%A7%E7%94%B7%E5%AD%A9%E5%90%97 != 我也能找到属于我的阳光大男孩吗. E questo causa un reindirizzamento.

  def slugs_do_not_match
    if SiteSetting.slug_generation_method != "encoded"
      params[:slug] && @topic_view.topic.slug != params[:slug]
    else
      params[:slug] && CGI.unescape(@topic_view.topic.slug) != params[:slug]
    end
  end

Quindi il problema è lo stesso, cioè, perché il mio sito genera uno slug codificato quando SiteSetting.slug_generation_method è già impostato su none.