¿Cómo redirigir todas las páginas 404 a la página principal?

Hola,

¿Es posible redirigir automáticamente todas las páginas 404 rotas a la página de inicio o a alguna otra página?

Saludos

3 Me gusta

Dado que Discourse no utiliza htaccess, no estoy seguro de dónde buscar una solución. Cualquier ayuda sería apreciada :slight_smile:

Supongo que podrías crear un plugin para lograr eso.

Podría ser confuso redirigir inmediatamente, así que ¿por qué no cambiar la ruta 404 para redirigir a la página de inicio después de un corto período de tiempo con un mensaje correspondiente?

Eso podría funcionar, pero no sé cómo hacerlo :confused:

¿Hay algún plugin para esto?

Lo dudo. Podrías Marketplace

Htaccess no debería usarse de todos modos, incluso si hubiera Apache2 delante de Discourse, y no lo hay.

Docker complica la vida :wink: y no sé cómo manejarlo. Pero puedes poner Nginx (o cualquier otro servidor/proxy inverso) delante de Discourse si quieres. Y entonces tal redirección debería ser una tarea bastante trivial. Puedes hacer algo como esto:

Pero, ¿por qué querrías redirigir los 404 a la página principal en primer lugar? Si un usuario está buscando algo y obtiene la página principal en lugar de lo que quería o un 404, es un poco confuso. Y después de eso, el mismo usuario lo intentará de nuevo porque tal vez hizo algo mal o ese sitio tuvo un problema. Totalmente innecesario y hay una razón por la que cada sitio debería mostrar un error 404 en lugar de alguna redirección extraña.

Estoy migrando mi blog de WordPress a Discourse. Ahora, debido a una estructura de enlaces diferente, habrá muchísimas páginas 404 después de la migración. No puedo configurar una redirección para cada una de ellas manualmente, así que necesito una solución para hacerlo automáticamente.

Sí, pero esa no es una solución. Es una mala solución, nada más. Tu estructura de URL seguiría rota, pero solo la estás ocultando. Y no, no puedes transferir valor SEO de esa manera ;)\n\nDe todos modos, entonces tienes un servidor ahí. ¿Intentas usarlo?

Si utilizara un subdominio diferente para los sitios de Wordpress y Discourse, probablemente podría hacerlo en el extremo del servidor de Wordpress.

Es posible modificar page_not_found.title (originalmente “¡Uy! Esa página no existe o es privada.”) – es una lástima para usted que no haya algo como page_not_found.content que le permita explicar la situación en detalle.

1 me gusta

¿Está la configuración de administrador detailed 404 si eso es de alguna utilidad?

Esa opción no implica ningún tipo de redirección, si no me equivoco.

A dónde sea que apunten esos enlaces… ¿se migrarán a Discourse? Por ejemplo, si esos enlaces apuntan a publicaciones de blog, que estás convirtiendo en temas, entonces podrías crear enlaces permanentes: Redirect old forum URLs to new Discourse URLs using permalinks

También podrías reasignar esas URL a otra cosa. Suponiendo que las URL tienen algún formato común, podrías usar REGEX y el comando remap para reemplazarlas:

remap [--global,--regex] FROM TO

Un ejemplo de cómo usar el comando:

discourse remap --regex "[/?color(=[^\]]*)*]" "" # eliminando bbcodes de "color"
1 me gusta

Excepto que eso debe hacerse en el servidor de WordPress si uno quiere mantener contentos a Google Y a los usuarios.

1 me gusta

5 publicaciones se dividieron en un nuevo tema: ¿Cómo redirijo a la página de inicio después de eliminar un tema?

Puedes manejar todas las páginas 404 rotas a la página de inicio u otra página usando la función “Personalizar”.
Ve a la sección Personalizar > Temas > Crear Nuevo Tema > nombra tu tema, por ejemplo Redirección 404 y establece el Tema Base en Predeterminado.
Luego crea el nuevo tema > Editar CSS/HTML. En la sección HTML, crea un fragmento de JavaScript que manejará la redirección.
Pega este código.

<script type="text/discourse-plugin">
  api.onPageChange((url, title) => {
    // Redirigir a la página de inicio para todas las páginas 404
    if (url.includes('/404')) {
      window.location.href = '/';
    }
  });
</script>

Ajusta el nombre de tu página según tus necesidades. Lee esto redirigir URL antigua a nueva URL de Discourse