Planes de hosting
Servicios de hosting que se adaptan a las necesidades de tu proyecto
Planes Multicuenta
Hosting para desarrolladores, agencias y empresas, pudiendo gestionar las cuentas de tus clientes
Dominios
Registra o transfiere tu dominio de forma sencilla y al mejor precio
Soluciones
Conócenos
Si gestionas un sitio WordPress multiidioma con Polylang y has activado la función de detección automática del idioma del navegador, probablemente hayas notado que tu página principal carga considerablemente más lenta que el resto de páginas de tu sitio, incluso aunque tengas LiteSpeed Cache correctamente configurado y funcionando.
Esto ocurre porque Polylang necesita ejecutar código PHP para leer las preferencias de idioma del navegador del visitante y redirigirlo a la versión correspondiente de tu web. Para poder hacer esto, Polylang desactiva automáticamente la caché de la página principal, impidiendo que LiteSpeed Cache haga su trabajo. El resultado es que cada visita tiene que cargar WordPress completo, ejecutar PHP y consultar la base de datos, en lugar de servir una versión cacheada instantánea como ocurre con el resto de páginas.
La solución es desactivar esta función en Polylang e implementar la detección de idioma mediante reglas en el archivo .htaccess, que se ejecutan a nivel de servidor antes de que LiteSpeed Cache entre en juego. De esta forma mantienes la funcionalidad de detección automática mientras permites que LiteSpeed Cache pueda cachear tu página principal correctamente, recuperando el máximo rendimiento.
Accede al panel de administración de WordPress, dirígete a Idiomas → Ajustes y desmarca la opción Detectar el idioma del navegador para el idioma de las nuevas visitas. Guarda los cambios.
Edita el archivo .htaccess de tu instalación WordPress mediante el administrador de archivos de cPanel o por FTP. Añade las siguientes reglas al inicio del archivo, antes de cualquier otro bloque de código. Es importante colocarlas fuera del bloque de LiteSpeed Cache para evitar que el plugin las sobrescriba al regenerar su configuración.
RewriteEngine On
# Francés
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{HTTP_COOKIE} !pll_language= [NC]
RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^(.*)$ /fr/$1 [R=302,L,CO=pll_language:fr:.tudominio.com:525600:/]
# Italiano
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{HTTP_COOKIE} !pll_language= [NC]
RewriteCond %{HTTP:Accept-Language} ^it [NC]
RewriteRule ^(.*)$ /it/$1 [R=302,L,CO=pll_language:it:.tudominio.com:525600:/]
# Inglés (predeterminado) - solo establece cookie
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{HTTP_COOKIE} !pll_language= [NC]
RewriteRule ^(.*)$ /$1 [CO=pll_language:en:.tudominio.com:525600:/,L]
Importante: Este es solo un ejemplo con francés, italiano e inglés. Debes adaptar las reglas a los idiomas específicos que tengas configurados en tu Polylang y reemplazar .tudominio.com por tu dominio real en todas las líneas. El punto inicial es necesario para que la cookie funcione en el dominio y subdominios.
Cada bloque comprueba tres condiciones antes de redirigir:
%{REQUEST_URI} ^/$: Verifica que el visitante esté en la página principal, no en páginas internas.%{HTTP_COOKIE} !pll_language=: Comprueba que no exista ya una cookie de idioma establecida, evitando redirecciones repetidas.%{HTTP:Accept-Language} ^en: Lee la preferencia de idioma del navegador del visitante.Si se cumplen las tres condiciones, redirige al subdirectorio del idioma correspondiente y establece una cookie que dura un año (525600 minutos), evitando que se vuelva a evaluar en futuras visitas.
Las reglas del ejemplo incluyen francés, italiano e inglés, pero debes adaptarlas a los idiomas específicos que tengas configurados en tu Polylang. Si tu sitio usa otros idiomas como alemán, español, portugués, etc., necesitas crear bloques para cada uno.
Por ejemplo, si quieres añadir el alemán a las reglas anteriores, duplica uno de los bloques existentes y modifica estos tres elementos:
# Alemán
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{HTTP_COOKIE} !pll_language= [NC]
RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^(.*)$ /de/$1 [R=302,L,CO=pll_language:de:.tudominio.com:525600:/]
Los tres valores que debes cambiar son:
^de en HTTP:Accept-Language: Código ISO del idioma (de para alemán, es para español, pt para portugués, etc.)/de/ en RewriteRule: Subdirectorio del idioma según configuración de Polylangpll_language:de en la cookie: Mismo código del subdirectorioSi el ejemplo incluye idiomas que no tienes configurados en tu Polylang, simplemente elimina los bloques completos de esos idiomas. Solo debes mantener reglas para los idiomas que realmente existan en tu sitio.
Para probar que las redirecciones funcionan correctamente, abre una ventana de incógnito de tu navegador y accede a tu dominio principal. Deberías ser redirigido automáticamente al subdirectorio del idioma que corresponda con las preferencias de tu navegador.
Con esta configuración LiteSpeed Cache podrá cachear tu página principal correctamente como el resto de páginas de tu sitio, manteniendo la detección automática de idioma funcionando y recuperando el máximo rendimiento que ofrece LiteSpeed Cache.