Redirecionar URLs antigas do fórum para novas URLs do Discourse usando permalinks

Redirecionando URLs Antigas do 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, provavelmente deseja que todos os seus resultados 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 à criação de regras nginx, usando a tabela de pesquisa de permalinks (permalinks lookup table).

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
  • tag_id: para mostrar uma tag
  • user_id: para mostrar um perfil de usuário
  • external_url: para redirecionar para uma URL que pode não pertencer à sua instância do Discourse

Por exemplo, se as URLs dos tópicos do seu fórum original fossem como http://example.com/discussion/12345, e a URL desse tópico após a importação for http://example.com/t/we-moved/987, 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 executará 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 mecanismos de busca atualizem seus registros e comecem a usar as novas URLs.

Se você deseja que algumas URLs redirecionem para fora do Discourse, pode fazer isso definindo external_url:

Permalink.create(url: '/discussion/12345', external_url: 'http://archived.example.com/discussion/12345')

Informações Adicionais

Para encontrar o ID de uma subcategoria, você pode procurá-la pelo slug assim:

Category.find_by_slug('products').id

Para excluir o permalink para essa URL, faça o seguinte:

Permalink.find_by_url("/blah").destroy

Pode haver apenas um registro de permalink por URL, então basta pesquisar pela URL.

Criando um mapa de tópicos do MyBB para o Discourse

Perguntas sobre redirecionamento do Discourse para o WordPress

Normalização de Permalink


Última Revisão por @SaraDev em 2022-06-03T20:00:00Z

37 curtidas