Migrare un forum phpBB3 a Discourse

Vedi SiteSettings.permalink_redirects

Modifica: ops. Normalizzazioni dei permalink

Intendi in /admin/site_settings/category/all_results cercare permalink_redirects? Quell’impostazione non esiste per me.

Ma permalink_normalizations funziona in qualche modo, usando /^forum\\/(view.*)/\\1:

  • Tutti i link phpBB iniziano con view, come viewtopic.php e viewforum.php. In realtà, questi sembrano essere gli unici due URL migrati nel nostro caso, quindi l’espressione regolare potrebbe essere rafforzata o divisa in due per la corrispondenza del percorso completo.
  • Quindi, quell’espressione regolare (sintassi sed) prende tutti gli URL che iniziano con /forum/view e rimuove la parte forum/.

Ora dobbiamo solo reindirizzare tutti i /phpbb/ (il nostro vecchio percorso del forum) a /forum/ sul webserver (o Cloudflare nel nostro caso) e Discourse farà il resto. Avrei dovuto trovarlo circa 3 anni fa, invece di rompere tutti i backlink :smiling_face_with_tear:.

Ma fammi sapere dove dovrebbe trovarsi questo permalink_redirects, forse richiede un plugin, o faceva parte del plugin di importazione phpBB o qualcosa del genere?

EDIT: Funziona bene:

root@micha:~# curl -IL https://dietpi.com/phpbb/viewtopic.php?p=46083
HTTP/2 301
location: /forum/viewtopic.php?p=46083

HTTP/2 301
location: https://dietpi.com/forum/t/is-there-a-simple-launch-page-for-dietpi/11237/1
x-discourse-route: permalinks/show

HTTP/2 200
x-discourse-route: topics/show

Il primo reindirizzamento /phpbb => /forum avviene su Cloudflare tramite una regola di reindirizzamento, per tenere un carico banale lontano dal nostro server di origine. Il secondo reindirizzamento all’argomento effettivo viene eseguito su Discourse tramite permalink, rimuovendo la /forum/ iniziale tramite la normalizzazione dei permalink, per corrispondere ai permalink aggiunti dal plugin di importazione phpBB, che non contengono né il vecchio né il nuovo percorso della sottodirectory del forum.

Scusa. Era quello che intendevo.

No. Basta creare una normalizzazione per quel percorso.

Ciò non funziona, poiché Discourse si trova in /forum e non vede alcuna richiesta a /phpbb. Con Discourse su un percorso secondario, che non corrisponde al percorso del precedente software del forum da importare, non c’è modo di evitare di eseguire un reindirizzamento (o una riscrittura prima del proxy) al percorso di Discourse, affinché la sua normalizzazione diventi effettiva.

1 Mi Piace

Giusto. Me l’ero perso. Devi reindirizzare /phpbb a /forum, e probabilmente ancora preoccuparti delle normalizzazioni.

Va bene, ma in effetti non è stato troppo difficile: /^forum\\/(view.*)/\\1 funziona perfettamente per i nostri vecchi permalink phpBB. Non sono sicuro se, a seconda delle impostazioni, ci siano altri permalink generati dal plugin di importazione oltre a viewforum.php e viewtopic.php, come ad esempio link ai profili utente o simili?

Sarebbe effettivamente bello avere un modo per scorrere/navigare o ordinare i permalink, per sapere meglio quali schemi di URL sono contenuti. Ma OOT, e dopo aver eseguito un ciclo attraverso i modelli di ricerca, sono certo che nel nostro caso esistono solo i due sopra menzionati.

Sembra che lo script gestisca solo i permalink di categorie, argomenti e post.

Se volessi creare permalink utente e i profili utente nel vecchio sistema includono l’import_id dell’utente, potresti crearli con un po’ di ruby nella console.

1 Mi Piace

Buono a sapersi. E gli URL di argomenti e post utilizzano lo stesso script PHP. Quindi, per escludere qualsiasi normalizzazione non intenzionale, la mia regex potrebbe essere divisa in due:

  1. /^forum\\/(viewforum.php\\?.*)/\\1 per le categorie
  2. /^forum\\/(viewtopic.php\\?.*)/\\1 per argomenti e post

… o /^forum\\/(view(forum|topic).php\\?.*)/\\1, non sono sicuro se ci siano differenze marginali in termini di prestazioni.

Gli URL dei profili sono comunque improbabili che abbiano backlink. Li usiamo per dare credito nei nostri appunti di rilascio agli utenti che hanno segnalato bug o i cui suggerimenti sono stati inclusi nel nostro progetto. Ma questo è un caso raro, immagino, e i link nei nostri appunti di rilascio sono stati aggiornati immediatamente quando siamo passati a Discourse.

1 Mi Piace