Dada una aplicación de Gatsby con direcciones URL de productos generadas dinámicamente en la compilación:
¿Hay alguna forma de hacer que el acceso a direcciones URL secundarias no existentes de cada producto se redirija automáticamente a la raíz de ese producto? Preferiblemente en el lado del servidor ( gatsby-ssr.js ).
Como esto:
Hasta ahora, solo encontré una solución del lado del cliente, que incluye verificar la ruta en la plantilla de página 404 y hacer una window.location.assign condicional. Esto no es muy óptimo ya que muestra la página 404 antes de redirigir y no realiza una redirección 302/301.
Puede usar la acción createRedirect en gatsby-node.js :
exports.createPages = async ({ graphql, actions }) => { const { createRedirect } = actions; createRedirect({ fromPath: `/product/*/foo`, toPath: `/product/*`, }); } Ajústelo como desee, puede usar sus reglas de redireccionamiento actuales dentro de createRedirect .
Tenga en cuenta que en createPages es donde crea todas las páginas dinámicas, por lo tanto, tiene todos los slugs y rutas disponibles para realizar sus redireccionamientos dinámicos.
Más detalles: https://support.gatsbyjs.com/hc/en-us/articles/1500003051241-Working-with-Redirects-and-Rewrites