Reindirizzare URL del forum vecchi quando il percorso contiene il nome di una risorsa Discourse

Ciao,

I miei vecchi URL del forum sono nel formato /posts/t{topic_id}-{url_slug}.

Ho utilizzato il Permalink di Discourse per mappare i vecchi URL del forum ai nuovi URL di Discourse.

Il problema è che il Rails Router sta instradando le richieste per i vecchi URL del forum a uno dei percorsi associati alla risorsa “posts”. (Non so quale percorso.)

La normalizzazione del Permalink viene eseguita dopo che l’instradamento è stato completato, quindi non è una soluzione.

Penso che la soluzione sia aggiungere un percorso personalizzato in config\routes.rb per saltare l’elaborazione della richiesta da parte del PostsController se l’URL è nel formato /posts/t{topic_id}-{url_slug}, ma non sono abbastanza esperto di Rails Routing per apportare questa modifica. O, forse non è questo il modo?

Grazie.

1 Mi Piace

Questo è sfortunato.

Come sono? Quali sono i permalink che hai aggiunto?

Il forum è già attivo o puoi ancora eseguire lo script di importazione? (In realtà, puoi creare uno script Ruby che puoi eseguire in Rails per aggiungere Permalink come quelli che descrivo.)

Penso che potresti voler rendere i tuoi Permalink qualcosa come /oldforum/{topic_id} e poi aggiungere una configurazione a nginx per catturare quegli URL /posts/t e rimapparli a /oldforum/{topic_id}.

Quindi (secondo AI) faresti una replace con pups (presto potrai aggiungerlo a un outlet, ma non so quando succederà) per aggiungere questo alla tua configurazione nginx discourse.conf:

# Inserisci questo all'interno del tuo blocco server {}
location ~ ^/posts/t(?<topic_id>\d+)-.*$ {
    # Redirect permanente (301)
    return 301 /oldforum/$topic_id;
    
    # In alternativa, per redirect temporaneo (302), usa:
    # return 302 /oldforum/$topic_id;
}

Lo proverei apportando quelle modifiche manualmente all’interno del container e poi lavorerei a ritroso per aggiungere le modifiche al tuo app.yml.

2 Mi Piace

:laughing:

Sì, è esattamente quello che ho fatto; ho scritto uno script Ruby per aggiungere tutti i Permalinks.

Ha funzionato! Grazie.

3 Mi Piace

Ho scoperto che questa soluzione potrebbe non andare bene perché la catena di reindirizzamento influenzerà il punteggio SEO del sito. Sono necessari due reindirizzamenti 301 e tre richieste per raggiungere il post effettivo.

E poi, lasciare che Permalink gestisca la richiesta. Sembra che dovrebbe funzionare ma non sono sicuro.

1 Mi Piace