Al implementar una nueva aplicación NextJS, hay algunas rutas heredadas que deben conservarse del sitio antiguo que no es NextJS.
/const-string-[long-unique-hash] se usa actualmente para una redirección de httpd conf:
Ex. RewriteRule ^const-string-(.*)$ https://google.com?q=const-string-$1 [L,NC]
¿Cómo puedo conservar el enrutamiento de NextJS, pero permitir rutas heredadas que coincidan con la ruta: /const-string-* ?
Comportamiento deseado:
/blog rutas pages/blog.js
/const-string-a1b2c3d4 rutas a https://google.com?q=const-string-a1b2c3d4
Comportamiento actual (solo prueba localhost hasta ahora):
/blog rutas pages/blog.js funciona como se esperaba
/const-string-a1b2c3d4 rutas a 404
¿Cómo puedo detectar direcciones URL que coincidan con esta cadena antes de que se redirija a 404?
Para otros que deseen hacer lo mismo, terminé usando un archivo 404.js personalizado para manejar redireccionamientos como este.
pages/404.js :
import {useRouter} from 'next/router'; import { useEffect, useState } from 'react'; export default function Custom404() { const router = useRouter(); const [route, setRoute] = useState(''); var regex = new RegExp(/const-string-([0-9A-Za-z-]+)/gi); var matches = route.match(regex); useEffect(() => { setRoute(router.asPath); window.location.href = (matches ? "https://google.com/?q=" + matches[0] : '/?404'); }, [router, matches]); return <h1>Redirecting...</h1> }