Ver SiteSettings.permalink_redirects
Editar: ups. Normalizaciones de permalinks
Ver SiteSettings.permalink_redirects
Editar: ups. Normalizaciones de permalinks
¿Te refieres a buscar permalink_redirects en /admin/site_settings/category/all_results? Esa configuración no existe para mí.
Pero permalink_normalizations funciona de alguna manera, usando /^forum\\/(view.*)/\\1:
view, como viewtopic.php y viewforum.php. De hecho, esos parecen ser las únicas dos URL migradas en nuestro caso, por lo que la expresión regular podría reforzarse o dividirse en dos para la coincidencia de ruta completa.sed) toma todas las URL que comienzan con /forum/view y elimina la parte forum/.Ahora solo necesitamos redirigir todo /phpbb/ (nuestra antigua ruta del foro) a /forum/ en el servidor web (o Cloudflare en nuestro caso) y Discourse se encarga del resto. Debería haber encontrado esto hace unos 3 años, en lugar de romper todos los backlinks :cara_con_lágrimas:.
Pero hazme saber dónde se supone que está este permalink_redirects, tal vez requiera un plugin, o fue parte del plugin de importación de phpBB o algo así.
EDITAR: Funciona bien:
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
La primera redirección /phpbb => /forum ocurre en Cloudflare a través de una regla de redirección, para mantener una carga trivial alejada de nuestro origen. La segunda redirección al tema real la realiza Discourse a través de permalinks, eliminando el /forum/ inicial a través de la normalización de permalinks, para que coincida con los permalinks agregados por el plugin de importación de phpBB, que no contienen ni la ruta del subdirectorio del foro antiguo ni la nueva.
Lo siento. Eso es lo que quise decir.
No. Solo haz una normalización para esa ruta.
Eso no funciona, ya que Discourse vive en /forum y no ve ninguna solicitud a /phpbb. Con Discourse en una subruta, que no coincide con la ruta del software de foro anterior para importar, no hay forma de evitar hacer una redirección (o reescritura antes del proxy) a la ruta de Discourse, para que su normalización sea efectiva.
Correcto. Se me pasó por alto. Necesitas redirigir /phpbb a /forum, y probablemente seguir lidiando con las normalizaciones.
De acuerdo, pero eso en realidad no fue muy difícil: /^forum\\/(view.*)/\\1 funciona perfectamente para nuestros antiguos permalinks de phpBB. No estoy seguro de si, dependiendo de la configuración, el plugin de importación genera otros permalinks además de viewforum.php y viewtopic.php, como posiblemente enlaces de perfil de usuario o similares.
En realidad, sería bueno tener una forma de desplazarse/navegar o ordenar los permalinks, para saber mejor qué esquemas de URL están contenidos. Pero fuera de tema, y después de recorrer los patrones de búsqueda, estoy seguro de que en nuestro caso solo existen los dos anteriores.
Parece que el script solo incluye enlaces permanentes de categorías, temas y publicaciones.
Si quisieras crear enlaces permanentes de usuario y los perfiles de usuario en el sistema antiguo incluyen el import_id del usuario, podrías crearlos con un poco de ruby en la consola.
Bueno saberlo. Y las URL de temas y publicaciones usan el mismo script PHP. Así que, para descartar cualquier normalización no intencionada, mi expresión regular podría dividirse en dos:
/^forum\\/(viewforum.php\\?.*)/\\1 para categorías/^forum\\/(viewtopic.php\\?.*)/\\1 para temas y publicaciones… o /^forum\\/(view(forum|topic).php\\?.*)/\\1, no estoy seguro de si hay alguna diferencia marginal en cuanto al rendimiento.
Las URL de perfiles son poco probables de tener enlaces entrantes de todos modos. Lo usamos para dar crédito en nuestras notas de lanzamiento a los usuarios que informaron de errores o cuyas sugerencias se incluyeron en nuestro proyecto. Pero ese es un caso raro, supongo, y los enlaces en nuestras notas de lanzamiento se actualizaron inmediatamente cuando cambiamos a Discourse.