Última atualização quebra permalink para categorias

Com a última atualização, o permalink da categoria está quebrado, os permalinks para tópicos estão funcionando bem.
Por exemplo: category/11562 redireciona para c/11562, o que está incorreto, o redirecionamento que está corretamente definido como destino deveria ser c/general/4 ou c/4
Alguém poderia ajudar com este problema?

Você criou um link permanente para category/11562 que costumava redirecionar para general, mas agora está quebrado?

1 curtida

Qual branch de atualização é esse?

Correto, funcionava bem. Depois, atualizei para:

<meta name="generator" content="Discourse 3.3.0.beta1-dev - https://github.com/discourse/discourse version 0bb492c6b6b79389a12b277b9d25b99e75f2625d">

Limpei completamente o banco de dados para reimportar outros dados do fórum do zero, e agora não está funcionando.

Eu acho que este é o problema, porque não consigo reproduzir isso em testes que passaram esta manhã.

Você pode verificar se o permalink ainda está lá em seu banco de dados e se ele ainda aponta para o lugar certo?

3 curtidas

Adicionei os permalinks novamente com a nova importação, é feito pelo script de importação. Mas também tentei adicionar manualmente pela web. Por favor, anexo um print da tela da web e os resultados do banco de dados. Talvez eu esteja perdendo alguma coisa:

Desculpe, apenas uma captura de tela por postagem era permitida

Seu permalink não está em /category/11562, mas em /forum/category/11562.

Minha suposição rápida é que você perdeu suas normalizações de permalink ao longo do caminho.

3 curtidas

Não entendo se verifico a resposta para https://preview.vaadin.com/forum/category/11562

Recebo um 302 com Localização:
https://preview.vaadin.com/forum/c/11562

Enquanto para tópicos, por exemplo:
https://preview.vaadin.com/forum/thread/851770

Recebo um 301 com Localização:
https://preview.vaadin.com/forum/t/tabsheet-tabs-not-displaying-properly-in-ie8-after-upgrade-to-6-7-1/173931

Espero que o Discourse gerencie ambos igualmente e, como pode ver, ambos mantêm o segmento /forum/

1 curtida

Então você não mencionou o fato de que todo o seu fórum é uma instalação em subpasta.

4 curtidas

Então, investiguei um pouco mais e não entendo como isso poderia ter funcionado, já que category/ sempre acionará a rota categories#redirect, e isso não mudou recentemente.

get "category/*path" => "categories#redirect"

EDIT: a postagem abaixo mostra que costumava funcionar

1 curtida

Sim. Não consigo entender como os permalinks e as permalink_normalizations funcionariam em uma instalação em subpasta.

E sempre foi uma instalação em subpasta?

E nada mais mudou quando você executou o script de importação novamente?

Parece mais provável que algo esteja diferente no seu script.

Espere. https://meta.discourse.org/category/67 redireciona para Announcements - Discourse Meta, então . . . não, mas há uma especificação que mostra que os permalinks substituem esse redirecionamento /category e ela tem 4-5 anos.

Então, acho que criaria alguns redirecionamentos de categoria manualmente na próxima vez para descobrir o que está acontecendo (como /category/minhacategoria ou outra coisa que nem tenha números)

2 curtidas

Boa descoberta @pfaffman , esse teste significa que deveria ter funcionado mesmo.

1 curtida

Uau, nem sabia que isso era possível!

Sim, é bem legal, veja Serve Discourse from a subfolder (path prefix) instead of a subdomain

4 curtidas

Obrigado por todas as suas respostas!

Curiosamente, descobrimos que os permalinks para categorias funcionam a partir de subpastas apenas se não houver um caminho chamado /category/ na URL de origem. Como @pfaffman mencionou em sua resposta. Por exemplo, /forum/category_foo/123 redireciona corretamente para a categoria geral de destino.
O Discourse captura /category/ e substitui por /c/
Consequentemente, isso pode ser resolvido muito facilmente:
adicione um permalink de /c/11562, que é o redirecionamento do antigo category/11562 para a categoria Geral /c/4.

E você estava certo, a primeira instalação foi sem subpasta, mas a segunda teve a subpasta, esta é a terceira. E testamos, e acredito que funcionou nas duas primeiras vezes. A única coisa que mudou entre a segunda e a terceira é que não limpamos o banco de dados entre a primeira e a segunda, e para a terceira foi uma instalação limpa com um novo banco de dados fora do docker (além da atualização para o Discourse v3). Então, suspeito que algo mudou no Discourse v3 beta. Caso contrário, por que funcionou, mesmo sem subpasta?

1 curtida

Aqui está sua resposta

Se entendi corretamente, o que você quer dizer é que o Discourse só aplica o redirecionamento de /category/ para /c/ se houver um segmento na rota.

No entanto, se eu usar seu fórum como exemplo: https://meta.discourse.org/ e colocar https://meta.discourse.org/category/1 sou redirecionado para https://meta.discourse.org/c/bug/1

Que é o mesmo que experimentamos com nossa instalação, seria impossível para seu site também ser redirecionado de /category/#old_number para /c/#real_category, você sempre acabaria em /c/#old_number.