Cuando se utiliza Prestashop en multi-idioma, las direcciones o URLs se escriben como sigue:
http://www.boutique-prestashop.com/iso/fichier.php
Así se obtiene:
http://www.boutique-prestashop.com/fr/fichier.php para el francés.
http://www.boutique-prestashop.com/en/fichier.php de Inglés.
Y así sucesivamente.
Le aconsejamos que siga funcionando, pero si ya ha enumerado su tienda sin el / en / para la lengua francesa y no quiere perder su posición en los motores de búsqueda, le ofrecemos una solución para cambiar el comportamiento de los Prestashop.
Por lo tanto, tendrá un sistema para tratar los siguientes puntos:
http://www.boutique-prestashop.com/fichier.php para el francés.
http://www.boutique-prestashop.com/en/fichier.php de Inglés.
El cambio requiere que los cambios en los archivos del sistema en Prestashop. A ver si sabes lo que haces! Recuerde que debe guardar todos los archivos que edite antes.
Los siguientes cambios:
Link.php en la clase, busque el método denominado "getLangLink".
Inicialmente, el método termina con esto:
Cambiar de esta manera:
return ";
Idioma :: retorno getIsoById ((int) $ id_lang) '/'.;
Este cambio tendrá como objetivo para cambiar todas las direcciones URL utilizadas por Prestashop, para eliminar la subcarpeta "en".
Frontcontroller.php en clase, busque el "init" método
A continuación, intente el siguiente código:
if ($ = iso Herramientas :: getValue ('isolang') y confirme Título isLanguageIsoCode ($ iso) y ($ id_lang = (int) (Lengua :: getIdByIso ($ iso))))
$ _GET ['Id_lang'] = $ id_lang;
A continuación, sustituirlo por:
if ($ = iso Herramientas :: getValue ('isolang') y confirme Título isLanguageIsoCode ($ iso) y ($ id_lang = (int) (Lengua :: getIdByIso ($ iso))))
$ _GET ['Id_lang'] = $ id_lang;
más
$ _GET ['Id_lang'] = (int) (Lengua :: getIdByIso ('es'));
Para cambiar el idioma, Prestashop utilizó el "es" el contenido de la URL. Debido a que habrá más, podemos explicar que si el idioma no se especifica en la url, entonces el idioma es el francés.
Cambios en su header.tpl archivo de plantilla. Logotipo de nivel, busque:
Y sustituir por:
El propósito de esta enmienda es simplemente para tener siempre la dirección correcta sobre la base de la lengua a la página de índice. De forma predeterminada, para Inglés, la dirección se http://www.boutique-prestashop.com/ lugar de http://www.boutique-prestashop.com/en/
En el archivo de módulos o gsitemap / gsitemap.php, la búsqueda
$ This-> _addSitemapNode ($ xml, Herramientas :: getShopDomain (true, true) __ PS_BASE_URI__ $ lang ['iso_code'] '/', '1 .00 ',' Diario ', date (' Ymd ')...);
Y sustituir por:
if ($ lang ['iso_code'] == 'es')
$ This-> _addSitemapNode ($ xml, Herramientas :: getShopDomain (true, true) __ PS_BASE_URI__, '1 .00 ',' Diario ', date (' Ymd ').);
más
$ This-> _addSitemapNode ($ xml, Herramientas :: getShopDomain (true, true) __ PS_BASE_URI__ $ lang ['iso_code'] '/', '1 .00 ',' Diario ', date (' Ymd ')...);
El módulo de mapa, escribe todas las direcciones URL debe seguir la norma ISO en el principio del archivo generado. El objetivo es eliminar la dirección URL con la subcarpeta "es" puesto que ya no existen.
Por último, abra la Tools.php clase, encontrar el método de generateHtaccess.
Buscar en el siguiente código:
if (empty ($ meta ['url_rewrite']) y confirme :: isLinkRewrite ($ meta ['url_rewrite']))
$ Array ['RewriteRule'] ['contenido'] ['^'. $ Idioma ['iso_code']. '/'. $ Meta ['url_rewrite']. '$'] = $ Meta ['page']. '. php? isolang ='. $ language ['iso_code']. ' [QSA, L] ';
elseif (array_key_exists ($ key, $ default_meta) && $ default_meta [$ key] ['url_rewrite']! = ")
$ Array ['RewriteRule'] ['contenido'] ['^'. $ Idioma ['iso_code']. '/'. $ Default_meta [$ key] ['url_rewrite']. '$'] = $ Default_meta [$ clave] ['page']. '. php? isolang ='. $ language ['iso_code']. ' [QSA, L] ';
$ Array ['RewriteRule'] ['contenido'] ['^'. $ Idioma ['iso_code']. '/ ([^? &] *)'] = $ 1? Isolang = '. $ Idioma [' iso_code '].' [QSA, L] ';
Y sustituir por:
foreach (Meta :: getMetasByIdLang ($ language ['id_lang']) as $ key => $ meta)
if (empty ($ meta ['url_rewrite']) y confirme :: isLinkRewrite ($ meta ['url_rewrite']))
$ Array ['RewriteRule'] ['contenido'] ['^'. $ Meta ['url_rewrite']. '$'] = $ Meta ['page']. '. Php? Isolang ='. $ Idioma [' '].' iso_code [QSA, L] ';
elseif (array_key_exists ($ key, $ default_meta) && $ default_meta [$ key] ['url_rewrite']! = ")
$ Array ['RewriteRule'] ['contenido'] ['^'. Default_meta $ [$ key] ['url_rewrite']. '$'] = $ Default_meta [$ key] ['page']. '. Php? isolang = '. $ language [' iso_code '].' [QSA, L] ';
Else {}
foreach (Meta :: getMetasByIdLang ($ language ['id_lang']) as $ key => $ meta)
if (empty ($ meta ['url_rewrite']) y confirme :: isLinkRewrite ($ meta ['url_rewrite']))
$ Array ['RewriteRule'] ['contenido'] ['^'. $ Idioma ['iso_code']. '/'. $ Meta ['url_rewrite']. '$'] = $ Meta ['page']. '. php? isolang ='. $ language ['iso_code']. ' [QSA, L] ';
elseif (array_key_exists ($ key, $ default_meta) && $ default_meta [$ key] ['url_rewrite']! = ")
$ Array ['RewriteRule'] ['contenido'] ['^'. $ Idioma ['iso_code']. '/'. $ Default_meta [$ key] ['url_rewrite']. '$'] = $ Default_meta [$ clave] ['page']. '. php? isolang ='. $ language ['iso_code']. ' [QSA, L] ';
$ Array ['RewriteRule'] ['contenido'] ['^'. $ Idioma ['iso_code']. '/ ([^? &] *)'] = $ 1? Isolang = '. $ Idioma [' iso_code '].' [QSA, L] ';
}
Palabras clave:
es , Prestashop , SEO , SEO , subdominio , url













Hola,
Tutorial perfecto gracias, pero mi vínculos ES (sólo) para las hojas de datos me redirecciona a un 404.
La versión ES está bien
Ckarone
Hola,
Acabo de comprar a través de + reescritura de direcciones URL se añade, sin saber que eran los desarrolladores.
Mi pregunta es: ¿- que es útil antes de instalar o configurar + reescritura de direcciones URL, para hacer una mani en la función propuesta por defecto en 1.4.
En mi instalación local en el Wamp, tuve un error debido a la activación de la función integrada, o por htaccess, no he logrado reparar y tuve que reinstalar todo.
El sitio se encuentra ahora en el servidor, pero yo prefiero pedirle que tome precauciones.
Gracias de antemano por su respuesta, tengo que esperar antes de instalar + reescritura de direcciones URL.
Cordialmente.
hola, he tratado de aplicar este método, pero recibo el siguiente mensaje de error:
Parse error: error de sintaxis, inesperado '$', esperando ']' en / var / www / vhosts / monsite.com / httpdocs / classes / Tools.php en la línea 1730.
¿cómo puedo remediar esta
muchas gracias
Gracias por este artículo muy útil, bien escrito, justo y preciso!
Buen trabajo.
Gracias de nuevo
Decir que el artículo está destinado a ayudar a que el usuario lo establecido en el código que indica dónde encontrar y cómo cambiarlo.
Si utilizamos los valores de reemplazo, esto no ayuda a entender realmente lo que parte del código se hace referencia (o tendría que realmente detalles de cada paso).
En resumen, este es sin duda la mejor práctica de utilizar