Il y a quelques jours, j’ai défini SiteSetting.slug_generation_method sur encoded, en essayant de démarrer un canal de discussion (mais sans activer le plugin de discussion du tout). J’ai vu que l’URL était laide en locale chinoise, j’ai donc remis SiteSetting.slug_generation_method à none.
Cependant, le site génère toujours des slugs dans les nouveaux sujets (pas tous, mais quelques-uns). Je n’ai aucune idée de ce qui ne va pas. J’ai essayé de faire Topic.update_all(slug: \"topic\") ou Topic.update_all(slug: nil) pour rafraîchir le slug, mais certains slugs de sujets sont toujours un titre encodé.
1 « J'aime »
Un autre problème est que je ne peux pas accéder à un sujet avec un slug encodé, j’obtiens ERR_TOO_MANY_REDIRECTS. Ce type de sujets avec un slug encodé est généré après que j’ai défini SiteSetting.slug_generation_method sur none.
Le journal indique
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)
J’ai lu le code, peut-être que slugs_do_not_match retourne true, car %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 != 我也能找到属于我的阳光大男孩吗. Et cela provoque une redirection.
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
Donc le problème est le même, c’est-à-dire pourquoi mon site génère un slug encodé alors que SiteSetting.slug_generation_method est déjà sur none.