Actualmente tengo la siguiente redirección en mi sitio web: example.com/[0-9]+/[0-9]+ → example.com/tag/$1-$2 donde $1 y $2 son los valores de la regex anterior. Escribí este simple plugin a continuación y funciona perfectamente si escribo example.com/[0-9]+/[0-9]+ en la barra de url. Sin embargo, si proporciono el mismo enlace en una publicación dentro de discourse, la redirección no funciona. ¿Hay alguna manera de lograr esto?
Discourse::Application.routes.append do
get '/:year/:id', to: redirect('/tag/%{year}-%{id}') , constraints: {year: /[0-9]+/, id: /[0-9]+/}
end
Mi propósito inicial para tener esa ruta no está relacionado con las importaciones. Me gustaría usar example.com/123/456 (123 y 456 son arbitrarios aquí, siempre que ambos sean [0-9]+) como un atajo para example.com/tag/123-456, por lo que no es semánticamente “incorrecto” usarlo.
Sin embargo, la ruta no funciona para enlaces internos (necesito actualizar el sitio web para que la ruta funcione), por lo tanto, necesito detectar cada example.com/[0-9]+/[0-9]+ y cambiarlo a example.com/tag/[0-9]+-[0-9]+, lo que parece prácticamente imposible de hacer sin analizar cada nueva publicación una por una.
Lo siento. Me perdí que tu problema es que no te gusta la ruta para las etiquetas. ¿Por qué crees que sería valioso cambiar esa ruta? ¿La gente las va a escribir a mano? No lo harán, porque Discourse les permitirá buscarlas e introducirlas.
¿Puedes dar un paso atrás y decir qué problema estás resolviendo al quitar “etiqueta” de la ruta de etiquetas?
La idea es que los usuarios puedan reemplazar “al vuelo” preprint.com con mywebsite.com y aterrizar en la página exacta del artículo que estaban navegando en el servidor de preprints. Esto funcionaba bien hasta que alguien puso un enlace interno mywebsite.com - This website is for sale! - mywebsite Resources and Information. en una publicación y nos dimos cuenta de que no se estaba redirigiendo y, en cambio, daba un 404. Estoy usando Discourse para una base de usuarios muy específica y dirigida, por lo tanto, mi caso de uso puede sonar extraño.
Ajá. Entonces creo que quieres un componente temático que reescriba esos enlaces cuando se ingresan en una publicación. No estoy muy seguro de cómo hacer eso. Una cosa, que requeriría un poco de entrenamiento para el usuario, sería el bbcode para esos enlaces. Pero creo que un componente temático podría simplemente secuestrar esos enlaces y reescribirlos cuando se hornean.
¡Genial! Creo que un componente de tema personalizado podría solucionar también los que usan https, pero quizás puedas intentar enseñar a la gente a no usarlos, o a usar #123-456.