Aiuto con il reindirizzamento dopo aver cambiato il dominio del mio forum Discourse

Dopo aver spostato il mio forum Discourse su una nuova istanza e URL, ho bisogno di aiuto per configurare il reindirizzamento del dominio.

Voglio che i link dal vecchio dominio vengano reindirizzati al nuovo dominio. Ad esempio, un link come https://olddomain.com/t/topic/89520 dovrebbe essere reindirizzato a https://newdomain.com/t/topic/89520.

Ho sentito parlare dell’utilizzo di un reindirizzamento 301, ma sto avendo difficoltà a individuare la directory di configurazione di Nginx sul mio server. Qualsiasi soluzione alternativa o guida sarebbe molto apprezzata.

Ciao @Anirudh_Dutta_Gupta :wave: benvenuto su Meta :slight_smile:

Hai già visto questo argomento:

Grazie @Lilly. Vorrei sapere se i permalink possono gestire anche un cambio di dominio completo. Giusto per chiarire, stiamo passando da abc.domain1.com a xyz.domain2.com. Sia il sottodominio che il dominio stanno cambiando. Ho letto questa discussione e volevo confermare:

Stai cercando di reindirizzare un argomento Discourse esistente a un URL esterno? Non è per questo che sono progettati i permalink. Sono abbastanza sicuro che non puoi reindirizzare nulla sotto /t.
Se vuoi che le persone che visitano https://hoidap.cheng.vn/t/cach-cua-do-nu-bao-binh-don-gian/70 2 vengano reindirizzate a https://cunghoangdao.info, penso che la cosa migliore sia modificare il post e dire alle persone di cliccare sul link per andare sull’altro sito.

Quindi imposti

Grazie @RGJ. Come procedo con il reindirizzamento generico? Sia il forum attuale che quello precedente sono su Discourse.

Supponendo che tu rimuova il forum attuale, si tratta di un normale reindirizzamento Apache o nginx.

Per nginx

server {
    server_name original.example.com;
    location / {
        rewrite ^/(.*)$ https://new.example.com/$1 permanent;
    }
}

o Apache

RewriteEngine On
RewriteRule ^(.*)$ https://new.example.com/$1 [R=301,L]

Mi era sfuggita la parte in cui stai solo spostando Discourse e non migrando. Dato che stai solo spostando domini, non hai bisogno dei reindirizzamenti permalink.

Era quello che pensavo originariamente, ma non riesco a trovare la cartella nginx in nessuna parte della directory /etc. Sto cercando nel posto sbagliato?

Questo perché c’è attualmente un’installazione di Discourse lì, che ha nginx nel container.

Sarebbe più facile puntare il vecchio hostname alla nuova istanza e gestire il reindirizzamento lì, vedi URL rewrite for domain change in permalinks - #7 by modius

In alternativa, rimuovere l’installazione di Discourse e configurare nginx sulla vecchia istanza.

Grazie @RGJ per la guida. Ho finito per fare un dominio di livello direttamente dal nostro provider di nomi di dominio, e ha funzionato. I vecchi link stanno reindirizzando correttamente ai nuovi link.

Ecco il metodo che utilizzo per un reindirizzamento completo dopo una modifica del dominio, ho mescolato alcune soluzioni offerte in questo forum.

Nell’app.yml, alla fine aggiungo i blocchi after_web_config e after_ssl:

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

  after_web_config:
    - replace:
        filename: /etc/nginx/nginx.conf
        from: /sendfile.+on;/
        to: |
          server_names_hash_bucket_size 64;
          sendfile on;
    - file:
        path: /etc/nginx/conf.d/discourse_redirect_1.conf
        contents: |
          server {
            listen 80;
            listen 443 ssl;
            server_name old-domain.com;
            return 301 $scheme://new-domain.com$request_uri;
          }
  after_ssl:
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--keylength/
        to: " -d old-domain.com --keylength"

## Qualsiasi comando personalizzato da eseguire dopo la build
run:
  - exec: echo "Inizio dei comandi personalizzati"
  ## Se si desidera impostare l'indirizzo email 'Da' per la prima registrazione, decommentare e modificare:
  ## Dopo aver ricevuto la prima email di registrazione, ri-commentare la riga. Deve essere eseguita solo una volta.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Fine dei comandi personalizzati"

Reindirizzerà i vecchi link ai nuovi forum, senza problemi SSL.