Error al iniciar o cerrar sesión con WPML

Si tu pagina web usa nginx y el formato de URL para WPML está configurado tipo directorios, es decir, /es/ /en/ /fr/, es posible que veas un error 404 cuando intentes acceder a una página de inicio de sesión o registro y al cerrar la sesión en un idioma secundario.

Para evitar esto, necesitará ajustar algunas configuraciones en tu servidor.

Como sabes, nginx tienes muchas ventajas pero su gran desventaja es la configuración, algo mas tediosa. Las reglas para traducir las páginas de inicio de sesión y registro generalmente se almacenan en el archivo htaccess. Debido a que ngnix no accede a este archivo, deberá modificar la configuración de nginx para agregar las siguientes reglas de reescritura. Si no tienes los permisos para hacerlo contacta con tu proveedor de hosting, y si no sabes cómo hacerlo sigue leyendo porque te lo explico.

La regla a agregar es:

rewrite ^/xx/wp-login.php /wp-login.php break;

Donde xx es el código de idioma.

Si tenemos por ejemplo como idiomas alternativos el inglés, alemán y francés debería de quedar la regla de nginx así:

rewrite ^/en/wp-login.php /wp-login.php break;
rewrite ^/de/wp-login.php /wp-login.php break;
rewrite ^/fr/wp-login.php /wp-login.php break;

Si el formato de URL que has configurado en WPML es domino o parámetro no es necesario realizar ninguna configuración adicional.

Veamos donde insertar el código.

Vamos a realizar el proceso conectándonos mediante SSH al servidor. El archivo de configuración normalmente se encuentra en una de estas rutas:

cd /etc/nginx/
o
cd /etc/nginx/conf.d/

En la primera ruta el archivo sería nginx.conf y en la segunda ruta el nombre depende de tu configuración pero termina en “.conf” también. Para mostrar los archivos que hay en la segunda ruta utilizaremos el comando “ls”.

Editamos el archivo con el editor:

*Recuerda que para editar el archivo hay que estar en modo “INSERT” para ello pulsa en la letra “i”.

vim ejemplo.conf

Añadimos las reglas justo dentro de “server”. Veamos un ejemplo parcial del archivo:

server {

  # WPML
  rewrite ^/de/wp-login.php /wp-login.php break;
  rewrite ^/es/wp-login.php /wp-login.php break;
  rewrite ^/ir/wp-login.php /wp-login.php break;

  # a partir de aquí habrán más cosas

Para guardar el archivo y salir, pulsaremos en la tecla “ESC” después “:w” para guardar y finalmente “:q” para salir.

Después de esto es recomendable revisar la sintaxis de nginx para ver que no haya ningún error.

nginx -t

Si no hay errores veremos un mensaje como este:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

A continuación ya podemos recargar nginx para que cargue la nueva configuración.

nginx -s reload

Con eso ya lo tendríamos solucionado. Espero que te haya ayudado.

Relacionados

Adrián Pajares
Adrián Pajares

Soy Adrián Pajares, especialista en desarrollo web, y ayudo a empresas a impulsar su negocio online y conseguir más clientes.

OFERTA:
TU WEB
POR 249€

-30%

días
horas
minutos
segundos

PRECIO ANTERIOR 349€