🔗 URLs, dominios y configuracion de tiendas
Actualizado: 2024-12-01
PrestaShop multitienda soporta tres modos de configuracion de URLs: dominios independientes, subdominios y subdirectorios. Cada uno tiene implicaciones diferentes para SEO y mantenimiento.
#Modos de multitienda
| Modo | Ejemplo | SEO | Uso tipico |
|---|---|---|---|
| Dominios independientes | tienda1.com / tienda2.com | Optimo — dominios separados | Marcas diferentes, mercados diferentes |
| Subdominios | es.mitienda.com / fr.mitienda.com | Bueno — Google trata como sitios separados | Idiomas o paises del mismo negocio |
| Subdirectorios | mitienda.com/es/ mitienda.com/fr/ | Comparten autoridad del dominio | Versiones idiomaticas del mismo catalogo |
| Mismo dominio | mitienda.com (misma URL) | Solo una tienda visible | Desarrollo/staging, tiendas B2B ocultas |
#Configurar dominios y URLs
Configurar en el BO
text
Preferencias → Multitienda → URL de la tienda
PASOS:
1. Seleccionar la tienda a configurar
2. Añadir nueva URL:
- Dominio: mitienda.es
- Dominio SSL: mitienda.es
- URI fisica: / (raiz del servidor)
- URI virtual: / (o /es/ para subdirectorio)
- URL principal: Si (marcar como URL canonica)
EJEMPLO CON SUBDOMINIOS:
Tienda España: es.mitienda.com → URI virtual: /
Tienda Francia: fr.mitienda.com → URI virtual: /
Tienda UK: en.mitienda.com → URI virtual: /
EJEMPLO CON SUBDIRECTORIOS:
Tienda España: mitienda.com → URI virtual: /es/
Tienda Francia: mitienda.com → URI virtual: /fr/
Tienda UK: mitienda.com → URI virtual: /en/
IMPORTANTE:
- Regenerar .htaccess despues de cada cambio de URL
- Configurar DNS para apuntar todos los dominios al mismo servidor
- Certificado SSL debe cubrir todos los dominios (wildcard o multi-domain)
#SEO y canonical
URLs canonicas en multitienda
php
<?php
// ── PrestaShop genera canonical automaticamente ──
// Cada tienda tiene su propia URL canonica basada en su dominio/URI
// ── Obtener la URL base de una tienda especifica ──
$shop = new Shop($idShop);
$url = $shop->getBaseURL(true); // true = con SSL
// https://es.mitienda.com/
// ── Generar link de producto para una tienda especifica ──
$link = new Link(null, null, $idShop);
$productUrl = $link->getProductLink($product, null, null, null, null, $idShop);
// ── Hreflang para SEO internacional ──
// En el <head> de cada pagina, añadir:
// <link rel="alternate" hreflang="es" href="https://es.mitienda.com/producto" />
// <link rel="alternate" hreflang="fr" href="https://fr.mitienda.com/produit" />
// <link rel="alternate" hreflang="en" href="https://en.mitienda.com/product" />
// Hook para añadir hreflang:
public function hookDisplayHeader(): string
{
$shops = Shop::getShops(true);
$hreflang = '';
foreach ($shops as $shop) {
$lang = new Language(Configuration::get('PS_LANG_DEFAULT', null, null, $shop['id_shop']));
$url = (new Shop($shop['id_shop']))->getBaseURL(true);
$hreflang .= '<link rel="alternate" hreflang="' . $lang->iso_code . '" href="' . $url . '" />';
}
return $hreflang;
}
#Virtual URL (subdirectorio)
Configurar subdirectorios
text
REQUISITOS
- Todas las tiendas comparten el mismo dominio
- Solo cambia la "URI virtual" (el subdirectorio)
CONFIGURACION:
Tienda 1: mitienda.com/es/ → URI virtual: /es/
Tienda 2: mitienda.com/fr/ → URI virtual: /fr/
Tienda 3: mitienda.com/ → URI virtual: / (raiz = default)
.HTACCESS
- PrestaShop genera las reglas automaticamente
- Boton "Regenerar .htaccess" en Rendimiento
- El RewriteBase debe coincidir con la URI fisica
VENTAJAS
- Un solo dominio y certificado SSL
- Comparten autoridad SEO del dominio
- Facil de configurar
DESVENTAJAS
- URLs mas largas
- Menor separacion visual entre tiendas
- Posibles conflictos de cache
Descargar en Markdown
Pensado para pegar en ChatGPT, Claude u otra IA. Incluye solo el contenido de esta pagina.