Redirecionando URLs Antigas de Fórum para Novas URLs do Discourse Usando Permalinks
Se você migrou de outro software de fórum para o Discourse usando um de nossos scripts de importação, então provavelmente deseja que todos os seus resultados de busca do Google, arduamente conquistados, continuem apontando para o mesmo conteúdo. O Discourse tem uma maneira integrada de lidar com isso para você como uma alternativa à escrita de regras do nginx, usando a tabela de consulta de permalinks.
A tabela de permalinks permite que você defina duas coisas: uma URL para corresponder e o que essa URL deve mostrar. Existem algumas opções para definir para onde a URL deve redirecionar. Defina uma destas:
topic_id: para mostrar um tópico
post_id: para mostrar uma postagem específica dentro de um tópico
category_id: para mostrar uma categoria
external_url: para redirecionar para uma URL que pode não pertencer à sua instância do Discourse
Por exemplo, se as URLs de tópico do seu fórum original fossem http://example.com/discussion/12345, e a URL desse tópico após a importação for http://example.com/t/we-moved/987, então você pode configurar o mapeamento assim:
cd /var/discourse
./launcher enter app
rails c
Permalink.create(url: '/discussion/12345', topic_id: 987)
O Discourse então realizará um redirecionamento com código de status de resposta HTTP 301 (movido permanentemente) para a URL correta do ID do tópico 12345. O 301 deve fazer com que os motores de busca atualizem seus registros e comecem a usar as novas URLs.
Se você quiser que algumas URLs redirecionem para fora do Discourse, você pode fazer isso definindo external_url:
É possível armazenar a regra de reescrita diretamente no cluster Docker do Discourse? Existe um servidor web que cuida do HTTP e SSL, posso adicionar algo lá?
Não vejo como isso pode funcionar, já que o nginx não conhece os novos IDs de tópico. Os IDs de /threads precisam ser convertidos para o ID de tópico do Discourse.
se eu chamar /threads/name.1234 ele é reescrito para /t/name e então mostra a postagem correta, o id não é usado naquele momento, acabei de testar isso.
Provavelmente só quando você tiver sorte e o Discourse e o seu fórum antigo gerarem os mesmos slugs (e o slug não começar com um número), mas isso provavelmente é bom o suficiente.
Se você quiser mudar o NGINX como sugere, pode olhar o template da web em discourse_docker para ver como mudar a configuração do nginx dentro do container. Aqui está um exemplo:
Não. Você adicionará isso ao seu app.yml e ele será aplicado a cada reconstrução.
Para economizar tempo de teste, você pode:
cd /var/discourse
./launcher enter app
apt update
apt-get install -y vim nano
Em seguida, use vim ou nano para editar o que você quiser ver se ele faz o que você pensa (e economizar 10-20 minutos por reconstrução). Você pode reiniciar o nginx com sv restart nginx.