Mover PrestaShop a otra carpeta o dominio: la tabla shop_url
Un compañero necesitaba pasar una tienda a una carpeta del dominio y Gustavo le explicó dónde guarda PrestaShop su dirección: la tabla shop_url. Repasamos los pasos y los sitios que siguen apuntando al dominio viejo después del cambio, con casos reales del grupo: correos con iconos rotos, un blog que dejó de funcionar y una extensión de PHP que faltaba.
Un compañero necesitaba pasar una tienda a una carpeta del dominio y no conocía PrestaShop. Gustavo le dio la clave: PrestaShop guarda en la base de datos el dominio y la carpeta, en la tabla shop_url. Copiar los ficheros no basta; hay que cambiar esa tabla, regenerar el .htaccess y vaciar la caché.
Dónde guarda PrestaShop su dirección
En la tabla ps_shop_url (el prefijo puede ser otro en tu tienda) hay una fila por tienda con estos campos:
| Campo | Qué guarda |
|---|---|
domain | El dominio, sin https:// |
domain_ssl | El dominio para https; normalmente, el mismo |
physical_uri | La carpeta, con barra al principio y al final: / o /tienda/ |
virtual_uri | Una ruta virtual para multitienda; normalmente, vacía |
El error del compañero fue el típico: poner el dominio con la carpeta en domain. Gustavo lo corrigió: el dominio va en domain y domain_ssl, y la carpeta, en su propio campo.
Paso a paso
- Haz copia de los ficheros y de la base de datos.
- Copia los ficheros a la nueva carpeta o al nuevo servidor.
- Cambia la fila de
shop_urly el dominio de la configuración (consulta de abajo). - Borra el contenido de
var/cache. - Entra en el back-office y regenera el
.htaccess: en Parámetros de la tienda → Tráfico y SEO, guarda la configuración de URL amigables. Desactivar, guardar, activar y guardar también sirve.
UPDATE ps_shop_url
SET domain = 'www.tudominio.com',
domain_ssl = 'www.tudominio.com',
physical_uri = '/tienda/'
WHERE id_shop = 1 AND main = 1;
UPDATE ps_configuration
SET value = 'www.tudominio.com'
WHERE name IN ('PS_SHOP_DOMAIN', 'PS_SHOP_DOMAIN_SSL');Lo que se queda apuntando a la dirección vieja
Gustavo avisó de lo que más cuesta: los enlaces escritos a mano en textos, páginas CMS, descripciones, banners y menús. Esos no los cambia nada; hay que buscarlos y reemplazarlos. En el grupo salieron otros tres sitios:
- Los correos. Una tienda que pasó de un subdominio de pruebas al dominio principal enviaba los correos de pedido con los iconos rotos. Las plantillas generadas en
mails/es(y en el resto de idiomas) llevaban la URL del subdominio. Hay que regenerarlas o reemplazar el dominio en ellas. - El
.htaccessde una copia. Tras subir una migración a producción, el blog dejó de funcionar. Gustavo le pidió buscar en el.htaccessel dominio de la copia y reemplazarlo por el de producción: las reglas de algunos módulos llevan el dominio escrito. - El servidor nuevo. Otro compañero cambió de servidor y el back-office iba, pero la tienda no. Sospechaba de una extensión de PHP sin activar; desde Rekire le apuntaron que lo más probable era que faltara regenerar el
.htaccess. Para lo primero, Parámetros avanzados → Información te dice si falta algo, y en la documentación de requisitos están todas.
Si además cambias de dominio
Las URL antiguas tienen que redirigir con un 301 a las nuevas, una a una, para no perder posicionamiento. Si solo cambias de servidor y las URL no cambian, no hace falta redirigir nada: basta con que el contenido sea el mismo.
Comprueba que ha ido bien
- La portada, una categoría y un producto cargan con la URL nueva y con sus imágenes.
- Puedes entrar en el back-office y guardar algo sin errores.
- Un pedido de prueba llega al final y los correos salen con enlaces e imágenes del dominio bueno.
- Si tienes multitienda, cada tienda tiene su propia fila en
shop_url: revísalas todas. - En el registro de errores del servidor no aparecen rutas de la ubicación antigua.
Si tienes muchas redirecciones que mantener, en Rekire tenemos un módulo de redirecciones que las gestiona desde el back-office.
Esto salió en @PrestashopEsp, la mayor comunidad PrestaShop de España en Telegram. Ver la conversación