Tenemos un problema con el plugin wpml que no conseguimos resolver y es que modifica el archivo htaccess de forma que esta pasa de ser:
<FilesMatch ".(php4|php5|php3|php2|php|phtml)$">
SetHandler application/x-lsphp82
</FilesMatch>
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
A ser así:
<FilesMatch ".(php4|php5|php3|php2|php|phtml)$">
SetHandler application/x-lsphp82
</FilesMatch>
# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /en/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /en/index.php [L]
</IfModule>
# END WordPress
Esto proboca multitud de errores 500 al navegar por la versión en inglés.
¿ALguien sabe a qué se debe esto y cómo solucionarlo? Desde soporte de WPML no nos ayudan con esto
Contenido solo visible a usuarios registrados
Hola Álvaro.
Puedes probar a indicarle a WPML que no agregue la carpeta de idioma. Para ello, agrega el siguiente código al archivo functions.php de tu tema o si utilizas algún plugin para añadir código como puede ser Code Snippets:
add_filter('mod_rewrite_rules', 'fix_rewritebase');
function fix_rewritebase($rules){
$home_root = parse_url(home_url());
if ( isset( $home_root['path'] ) ) {
$home_root = trailingslashit($home_root['path']);
} else {
$home_root = '/';
}
$wpml_root = parse_url(get_option('home'));
if ( isset( $wpml_root['path'] ) ) {
$wpml_root = trailingslashit($wpml_root['path']);
} else {
$wpml_root = '/';
}
$rules = str_replace("RewriteBase $home_root", "RewriteBase $wpml_root", $rules);
$rules = str_replace("RewriteRule . $home_root", "RewriteRule . $wpml_root", $rules);
return $rules;
}
Revisa si con eso se soluciona y nos comentas
Un Saludo
Muchas gracias, @pepesoler
Ahora vemos que los errores 500 ya no se producen al cambiar entre las versiones en español y en inglés de la web pero si que detectamos que el archivo .htaccess se sigue modificando igualmente. ¿Es esto normal?
Gracias de nuevo
Hola Álvaro.
Si, es normal, lo que pasa es que algun plugin de los que tienes instalados modifica la ruta que tienes en el archivo .htaccess.
Identificar el complemento específico que causa este problema puede ser complicado. Implica probar en un entorno de pruebas y desactivar los complementos uno por uno. Después de encontrar el complemento responsable, tendrias que comunicarte con el autor y solicitarle que agregue una solución que limite la eliminación de la regla de reescritura y que se realice solo una vez.
Como solución, el código que te indique lo que hace es decirle a WPML que no agregue la carpeta del idioma.
Un Saludo