Hace unos días, establecí SiteSetting.slug_generation_method en encoded, intentando iniciar un canal de chat (pero sin habilitar el plugin de chat en absoluto). Vi que la URL era fea en la configuración regional china, así que volví a establecer SiteSetting.slug_generation_method en none.
Sin embargo, el sitio todavía está generando slug en temas nuevos (no en todos, pero sí en algunos). No tengo idea de qué está mal con esto. Intenté Topic.update_all(slug: "topic") o Topic.update_all(slug: nil) para actualizar el slug, pero aún así, los slugs de algunos temas son títulos codificados.
1 me gusta
Otro problema es que no puedo acceder a un tema con una URL codificada, recibiendo ERR_TOO_MANY_REDIRECTS. Este tipo de temas con URL codificada se generan después de configurar SiteSetting.slug_generation_method en none.
El registro muestra
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)
He leído el código, tal vez slugs_do_not_match devuelve true, ya que %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 != 我也能找到属于我的阳光大男孩吗. Y esto causa una redirección.
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
Así que el problema es el mismo, es decir, ¿por qué mi sitio genera una URL codificada cuando SiteSetting.slug_generation_method ya está en none?