Reindirizzamento degli URL del vecchio forum a quelli nuovi di Discourse utilizzando i permalink
Se siete passati da altro software per forum a Discourse utilizzando uno dei nostri script di importazione, probabilmente desiderate che tutti i risultati di ricerca di Google guadagnati continuino a puntare allo stesso contenuto. Discourse dispone di un modo integrato per gestire ciò come alternativa alla scrittura di regole nginx, utilizzando la tabella di ricerca dei permalink.
La tabella dei permalink consente di impostare due elementi: un URL da cui effettuare la corrispondenza e ciò che tale URL dovrebbe visualizzare. Ci sono alcune opzioni per definire dove l’URL dovrebbe reindirizzare. Impostate una di queste:
topic_id: per mostrare un argomento
post_id: per mostrare un post specifico all’interno di un argomento
category_id: per mostrare una categoria
tag_id: per mostrare un tag
user_id: per mostrare un profilo utente
external_url: per reindirizzare a un URL che potrebbe non appartenere alla vostra istanza di Discourse
Ad esempio, se gli URL degli argomenti del vostro forum originale assomigliavano a http://example.com/discussion/12345, e l’URL di quell’argomento dopo l’importazione è http://example.com/t/we-moved/987, potete impostare la mappatura in questo modo:
cd /var/discourse
./launcher enter app
rails c
Permalink.create(url: '/discussion/12345', topic_id: 987)
Discourse eseguirà quindi un reindirizzamento con codice di stato della risposta http 301 (spostato permanentemente) all’URL corretto per l’ID argomento 12345. Il 301 dovrebbe indurre i motori di ricerca ad aggiornare i loro record e a iniziare a utilizzare i nuovi URL.
Se volete che alcuni URL reindirizzino lontano da Discourse, potete farlo impostando external_url:
Comportamento importante per i permalink esterni sugli URL degli argomenti
Quando viene creato un permalink external_url per un URL di argomento di Discourse (ad esempio /t/some-slug/123) per reindirizzare a un sito esterno, tenete presente:
l’argomento originale deve essere soft-deleted (non hard-deleted)
l’argomento deve appartenere a una categoria pubblica
Perché: se l’argomento è ancora attivo, Discourse lo risolve normalmente e la ricerca del permalink non viene utilizzata. Se l’argomento si trova in una categoria privata, i controlli dei permessi possono restituire 404 prima che venga applicato il reindirizzamento del permalink esterno.
Questo è particolarmente rilevante per la navigazione in-app (utenti connessi), dove le rotte possono essere richieste come JSON/XHR.
Informazioni aggiuntive
Per trovare l’ID di una sottocategoria, è possibile cercarla tramite lo slug in questo modo:
Category.find_by_slug('products').id
Per eliminare il permalink per quell’URL, fate questo:
Permalink.find_by_url("/blah").destroy
Può esserci un solo record di permalink per URL, quindi cercate semplicemente per URL.
Creazione di una mappa argomenti da MyBB a Discourse
Domande sul reindirizzamento da Discourse a WordPress
Normalizzazione dei permalink
Ultima revisione da @SaraDev il 2022-06-03T20:00:00Z