Aquí está toda mi página 404.html:
{% extends 'base.html' %} {% block title %}Page Not Found{% endblock title %} {% block head %} <script> var seconds =7; // countdown timer. var url="{{url_for('views.home')}}"; // variable for index.html url - NEEDS PORT NUMBER function redirect(){ if (seconds <=0){ // redirect to new url after counter down. window.location = url; } else { seconds--; document.getElementById("pageInfo").innerHTML="Redirecting to Home Page after " +seconds+" seconds." setTimeout("redirect()", 1000) } } </script> {% endblock head %} {% block content %} <header><h1>Sorry, the Page was not Found</h1></header> <h1>Oops! Looks like the page doesn't exist anymore</h1> <a href="{{ url_for('views.home') }}"><p>Click Here</a>To go to the Home Page</p> Needs port Number for link <!-- IE needs 512+ bytes: https://docs.microsoft.com/archive/blogs/ieinternals/friendly-http-error-pages --> {% endblock content %} {% block body %} <body onload="redirect()"> <p id="pageInfo"></p> {% endblock body %}El problema ocurre cuando el servidor web se ejecuta en el puerto 5000. La redirección se usa para el puerto 80. No sé cómo usar javascript para redirigir a un número de puerto específico. Todo lo demás parece estar funcionando bien. Necesito que el número de puerto se use dinámicamente; el número de puerto puede cambiar, por lo que no quiero codificar el número de puerto en la variable url. Si hay algo más que me falta, no dude en hacer un comentario o una solución.
Es posible construir la url con algunos js
window.location.origin Le dará host+port algo como http://localhost:3000 o cualquier puerto/host en el que se esté ejecutando.
Así que puedes anteponer eso a tu {{url_for('views.home')}} para obtener una URL correcta.
No estoy seguro de cuál es el valor de su url="{{url_for('views.home')}}"; es por lo que es posible que deba agregar un extra / en para que funcione.