Attualmente ho il seguente reindirizzamento sul mio sito web: example.com/[0-9]+/[0-9]+ → example.com/tag/$1-$2 dove $1 e $2 sono i valori dell’espressione regolare precedente. Ho scritto questo semplice plugin qui sotto e funziona perfettamente se digito example.com/[0-9]+/[0-9]+ nella barra degli URL. Tuttavia, se fornisco lo stesso link in un post all’interno di Discourse, il reindirizzamento non funziona. C’è un modo per raggiungere questo obiettivo?
Discourse::Application.routes.append do
get '/:year/:id', to: redirect('/tag/%{year}-%{id}') , constraints: {year: /[0-9]+/, id: /[0-9]+/}
end
Il mio scopo iniziale per avere quel percorso non è correlato alle importazioni. Vorrei utilizzare example.com/123/456 (123 e 456 sono arbitrari qui purché siano entrambi [0-9]+) come scorciatoia per example.com/tag/123-456, quindi non è semanticamente “sbagliato” usarlo.
Tuttavia, il percorso non funziona per i collegamenti interni (devo aggiornare il sito web per far funzionare il percorso), quindi devo rilevare ogni example.com/[0-9]+/[0-9]+ e cambiarlo in example.com/tag/[0-9]+-[0-9]+, il che sembra praticamente impossibile da fare senza analizzare ogni nuovo post uno per uno.
Mi dispiace. Non avevo capito che il tuo problema fosse che non ti piace il percorso per i tag. Perché pensi che cambierà quel percorso sarà prezioso? Le persone li digiteranno a mano? Non lo faranno, perché discourse permetterà loro di cercarli e inserirli.
Puoi fare un passo indietro e dire quale problema stai risolvendo rimuovendo “tag” dal percorso dei tag?
L’idea è che gli utenti possano sostituire “al volo” preprint.com con mywebsite.com e atterrare sulla pagina esatta dell’articolo che stavano sfogliando sul server di preprint. Questo funzionava bene finché qualcuno non ha inserito un link interno mywebsite.com - This website is for sale! - mywebsite Resources and Information. in un post e ci siamo resi conto che non reindirizzava e invece dava un 404. Sto usando Discourse per una base di utenti molto specifica e mirata, quindi il mio caso d’uso potrebbe sembrare strano.
Aha. Allora penso che tu voglia un componente del tema che riscriva quei link quando vengono inseriti in un post. Non sono abbastanza sicuro di come farlo. Uno, che richiederebbe un po’ di formazione per l’utente, sarebbe il bbcode per quei link. Ma penso che un componente del tema possa semplicemente intercettare quei link e riscriverli quando vengono “baked”.
Dopo aver menzionato i componenti del tema, sono riuscito a realizzare parzialmente ciò che stavo cercando utilizzando il seguente componente: Auto-Linkify Words
Bello! Penso che un componente a tema personalizzato potrebbe risolvere anche quelli con https, ma forse puoi provare a dissuadere le persone da ciò, o a usare #123-456