WordPress %postname% enlaces permanentes rompen la página de inicio estática (301)

2 minutos de lectura

así que tengo este problema desde hace un tiempo y parece que no puedo encontrar una solución adecuada.

Cada vez que habilito los enlaces permanentes de %postname%, mi página de inicio estática https://example.com/xy deja de funcionar y entrega errores 301 “el sitio no se está redirigiendo correctamente”, mientras que cualquier otra publicación o página en el sitio se redirige correctamente, por ejemplo https://example.com/xy/about-us obras.

Si vuelvo a los enlaces simples, no tengo problemas. Dos cosas que he notado son, si agrego “index.php” al final de la página de inicio, se cargará nuevamente, ejemplo https://example.com/xy/index.php.

Los enlaces permanentes %postname% también funcionan si configuro la URL del sitio dentro de un wp-config.php como este

define( ‘WP_HOME’, ‘http://example.com/xy’ );

define( ‘WP_SITEURL’, ‘http://example.com/xy’ );

Sin embargo, debo mantener relativa la ruta de la URL del sitio, por lo que esta no es una solución deseada.

Intenté deshabilitar todos los complementos y cambiar el tema a predeterminado sin éxito. He habilitado AllowOverride para mi directorio raíz. Tengo habilitada la reescritura de mods en apache, mi .htaccess es generado por WP y se ve así:

RewriteEngine On
RewriteBase /xy/
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /xy/index.php [L]
</IfModule>

  • parece que tiene la subcarpeta /xy/ donde instaló WP y su sitio funciona cuando agrega una barra al final ejemplo.com/xy Vuelva a verificar su htaccess desde su código, ¿dónde está abriendo la directiva ?

    – Priyesh

    15 de octubre de 2019 a las 11:27

  • Agregar una barra inclinada devolvió los mismos resultados, mi .htacess también parece estar configurado correctamente con mod_rewrite.c. Al final lo solucioné editando functions.php

    – mar91

    22 de octubre de 2019 a las 11:52

Así que solucioné este problema agregando lo siguiente en mi functions.php

function disable_front_page_redirects($redirect_url) {
        if( is_front_page() ) {
                $redirect_url = false;
        }

        return $redirect_url;
}

add_filter( 'redirect_canonical', 'disable_front_page_redirects' );

¿Ha sido útil esta solución?