Atualmente, tenho o seguinte redirecionamento no meu site: example.com/[0-9]+/[0-9]+ → example.com/tag/$1-$2 onde $1 e $2 são os valores da regex anterior. Escrevi o plugin simples abaixo e ele funciona perfeitamente se eu digitar example.com/[0-9]+/[0-9]+ na barra de URL. No entanto, se eu fornecer o mesmo link em uma postagem dentro do Discourse, o redirecionamento não funciona. Existe alguma maneira de conseguir isso?
Discourse::Application.routes.append do
get '/:year/:id', to: redirect('/tag/%{year}-%{id}') , constraints: {year: /[0-9]+/, id: /[0-9]+/}
end
Meu propósito inicial para ter essa rota não está relacionado a importações. Gostaria de usar example.com/123/456 (123 e 456 são arbitrários aqui, desde que ambos sejam [0-9]+) como um atalho para example.com/tag/123-456, então não é semanticamente “errado” usá-lo.
No entanto, a rota não funciona para links internos (preciso atualizar o site para que a rota funcione), daí a necessidade de detectar cada example.com/[0-9]+/[0-9]+ e alterá-lo para example.com/tag/[0-9]+-[0-9]+, o que parece praticamente impossível de fazer sem analisar cada novo post um por um.
Desculpe. Perdi que o seu problema é que você não gosta da rota para tags. Por que você acha que seria valioso mudar essa rota? As pessoas vão digitá-las manualmente? Não vão, porque o Discourse permitirá que elas pesquisem e insiram.
Você pode dar um passo atrás e dizer qual problema você está resolvendo ao tirar “tag” da rota de tag?
A ideia é que os usuários possam substituir preprint.com por mywebsite.com e acessar a página exata do artigo que estavam navegando no servidor de preprints. Isso estava funcionando bem até que alguém postou um link interno mywebsite.com - This website is for sale! - mywebsite Resources and Information. e percebemos que ele não estava redirecionando e, em vez disso, retornava um 404. Estou usando o Discourse para uma base de usuários muito específica e direcionada, portanto, meu caso de uso pode parecer estranho.
Aha. Então acho que você quer um componente de tema que reescreva esses links quando eles forem inseridos em uma postagem. Não tenho certeza de como fazer isso. Uma coisa que exigiria um pouco de treinamento do usuário seria o bbcode para esses links. Mas acho que um componente de tema poderia simplesmente sequestrar esses links e reescrevê-los quando eles fossem processados.
Legal! Acho que um componente de tema personalizado poderia resolver os com https também, mas talvez você possa tentar conscientizar as pessoas sobre isso, ou usar #123-456