Avisos
Vaciar todo

WPML modifica el archivo htaccess  

 
Álvaro
 Álvaro
Usuario activo
Buenos días.

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

Citar
Respondido : 17/09/2024 10:10 am
Pepe
 Pepe
Soporte CMS Webempresa Admin

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

ResponderCitar
Respondido : 17/09/2024 10:20 am

Álvaro
 Álvaro
Usuario activo

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

ResponderCitar
Respondido : 17/09/2024 1:18 pm
Pepe
 Pepe
Soporte CMS Webempresa Admin

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

ResponderCitar
Respondido : 17/09/2024 2:19 pm

Cursos Gratuitos WordPress