Tengo un sitio de netlify creado solo con html, css, js. Entiendo que puedo agregar un archivo _redirect a la raíz de mi proyecto que maneja las rutas que redirige todas las rutas a una página determinada de esta manera.
/* /index.html 200
Si el usuario navega a /brad, debería redirigir a /index.html.
Mi objetivo es evitar crear un archivo .Html para cada ruta. Sin embargo, quiero poder mantener la ruta como una variable (brad) o pasar la ruta a la página. Quiero acceder a la variable (brad) en js en index.html. Mi intención es hacer una acción diferente basada en el nombre de la ruta. Entonces, /brad funcionará de manera diferente a /susan (donde susan podría ser un usuario en el sitio).
Un ejemplo sería si el usuario no ha iniciado sesión, inicie sesión y envíelo a / brad (página de perfil de brad) después de iniciar sesión oa la página 404 si no existe ningún usuario brad. Aquí necesito hacer un seguimiento de a qué ruta accedió originalmente el usuario para saber a dónde enviarlos después.
Sé que en el código del lado del servidor como php, laravel puede pasar una redirección-> con ($ variable) en función de la ruta a la que se accedió a la que se puede acceder en la página a la que se redirige al usuario.
¿Es posible pasar la ruta de los redireccionamientos en netlify como una variable a js en /index.html?
Si no, ¿Netlify sería una mala opción para los sitios que necesitan mostrar rutas dinámicas como www.example.com/profile/1 ? ¿Debería optar por una solución de servidor tradicional con un backend separado?
Uso firebase para la autenticación y el almacenamiento de datos de usuario.
Siguiendo el comentario de @ChalanaN, creé una página 404.html en la raíz de mi proyecto. Netlify muestra esta página para todas las rutas inexistentes. La página contiene un script que obtiene el último parámetro de la URL y lo agrega como parámetro de consulta en el enlace a la página redirigida.
En 404.html
<script> let givenPath = window.location.href.split('/').pop();//get the element after the last '/' in the url window.location.href= '/index.html'+'?q='+givenPath; </script>
En index.html
<script> let redirectPath =window.location.href.split('=').pop(); </script>
Aquí, la variable redirectPath
contendrá la ruta original a la que accedió el usuario.
Así que www.example.com/brad.html redirigirá a '...index.html?q=brad.html' con 'brad.html' como contenido final en la variable redirectPath
y ahora tiene la ruta de redirección en un variable js.
Una advertencia: el uso de 'index.html/?q=' dará como resultado que no se pueda obtener index.html/ 404 en su máquina local cuando use el servidor en vivo, así que asegúrese de que no haya / antes de la página que se redirigirá si tiene la intención de probar localmente .
Como nota al margen, puede usar window.location.pathname para obtener la ruta, pero eso devuelve la ruta con el '/' adjunto a la ruta que ingresó el usuario.