{"id":1005,"date":"2023-05-31T14:13:57","date_gmt":"2023-05-31T11:13:57","guid":{"rendered":"https:\/\/presta.site\/blog\/resolviendo-los-problemas-de-reescritura-de-url-seo-en-prestashop\/"},"modified":"2026-07-25T13:38:59","modified_gmt":"2026-07-25T10:38:59","slug":"resolviendo-los-problemas-de-reescritura-de-url-seo-en-prestashop","status":"publish","type":"post","link":"https:\/\/presta.site\/blog\/es\/resolviendo-los-problemas-de-reescritura-de-url-seo-en-prestashop\/","title":{"rendered":"Reescritura de URL PrestaShop: checklist de 5 pasos para arreglar Friendly URLs rotas"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Friendly URL est\u00e1 activada, pero los enlaces de producto siguen mostrando <code class=\"codecolorer text default\"><span class=\"text\">index.php?id_product=12<\/span><\/code> &#8211; o cada ruta amigable devuelve 404. La <strong>reescritura de URL PrestaShop<\/strong> solo funciona cuando el interruptor del Back Office, el archivo de reescritura en la ra\u00edz (Apache) y las reglas del servidor web coinciden. Esta es una checklist de 5 pasos: identificar el s\u00edntoma, confirmar el ajuste de la tienda, corregir la capa del servidor, comprobar una URL y limpiar duplicados y 404 antiguos.<\/p>\n\n\n<!--more-->\n\n\n<p class=\"wp-block-paragraph\">El consejo gen\u00e9rico de \u00abactivar Friendly URL\u00bb es f\u00e1cil de encontrar en un chatbot. Lo que suele hacer perder horas es aplicar la correcci\u00f3n equivocada al s\u00edntoma &#8211; o saltarse la comprobaci\u00f3n de \u00e9xito o fracaso tras cada paso. Sigue la lista en orden. Las etiquetas oficiales est\u00e1n en <a href=\"https:\/\/docs.prestashop-project.org\/v.9-documentation\/user-guide\/configuring-shop\/shop-parameters\/traffic\" target=\"_blank\" rel=\"noopener noreferrer\">Par\u00e1metros de la tienda \u2192 Tr\u00e1fico<\/a> en la documentaci\u00f3n de PrestaShop 9. Antes de editar la configuraci\u00f3n del servidor, haz una <a href=\"https:\/\/presta.site\/blog\/es\/como-crear-una-copia-de-seguridad-en-prestashop\/\">copia de seguridad completa de PrestaShop<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Paso 1 &#8211; Identificar qu\u00e9 est\u00e1 roto<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Abre una ficha de producto en una ventana privada y anota qu\u00e9 caso se da. No lo omitas &#8211; los tres casos requieren correcciones distintas.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>A &#8211; URLs sin reescribir todav\u00eda.<\/strong> La barra de direcciones sigue mostrando <code class=\"codecolorer text default\"><span class=\"text\">id_product<\/span><\/code>, <code class=\"codecolorer text default\"><span class=\"text\">id_category<\/span><\/code> o <code class=\"codecolorer text default\"><span class=\"text\">controller=<\/span><\/code> tras activar Friendly URL. PrestaShop no est\u00e1 generando enlaces reescritos (o la cach\u00e9 sirve una p\u00e1gina antigua).<\/li>\n<li><strong>B &#8211; URLs amigables con 404.<\/strong> Los enlaces se ven correctos (<code class=\"codecolorer text default\"><span class=\"text\">\/categoria\/slug-del-producto<\/span><\/code>), pero cada ruta amigable devuelve Not Found. La tienda genera slugs; el servidor web no los enruta hacia PrestaShop.<\/li>\n<li><strong>C &#8211; Solo funciona en un dominio.<\/strong> La tienda principal va bien; un dominio multitienda, subdominio o subdirectorio falla. Suele ser URL de tienda \/ DNS \/ document root &#8211; no un segundo fallo de Friendly URL. Consulta en paralelo con esta checklist nuestra <a href=\"https:\/\/presta.site\/blog\/es\/que-es-la-multitienda-y-como-trabajar-con-ella-en-prestashop\/\">gu\u00eda de multitienda en PrestaShop<\/a>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u00c9xito:<\/strong> se puede se\u00f1alar A, B o C antes de tocar Apache o Nginx.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Paso 2 &#8211; Confirmar Friendly URL en el Back Office<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"412\" src=\"https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_1-5-1024x412.png\" alt=\"Reescritura de URL PrestaShop: interruptor Friendly URL en Par\u00e1metros de la tienda, Tr\u00e1fico y SEO\" class=\"wp-image-716\" srcset=\"https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_1-5-1024x412.png 1024w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_1-5-300x121.png 300w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_1-5-768x309.png 768w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_1-5.png 1381w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Ir a <strong>Par\u00e1metros de la tienda \u2192 Tr\u00e1fico y SEO<\/strong>.<\/li>\n<li>Abrir <strong>Configurar URLs<\/strong>.<\/li>\n<li>Poner <strong>Friendly URL<\/strong> en S\u00ed y guardar.<\/li>\n<li>Borrar la cach\u00e9 de PrestaShop (<strong>Par\u00e1metros avanzados \u2192 Rendimiento<\/strong>) y volver a probar el mismo producto en una ventana privada.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">En Apache, al guardar esta p\u00e1gina deber\u00eda crearse o actualizarse el <code class=\"codecolorer text default\"><span class=\"text\">.htaccess<\/span><\/code> de la ra\u00edz con las reglas de reescritura de PrestaShop. Si el archivo falta, est\u00e1 vac\u00edo o es m\u00e1s antiguo que el guardado, PHP no puede escribir en la ra\u00edz de la tienda &#8211; corrige propiedad\/permisos antes de buscar fallos en m\u00f3dulos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En Nginx, el interruptor por s\u00ed solo no instala reglas de reescritura. Sigue haciendo falta el Paso 3.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u00c9xito (caso A):<\/strong> tras borrar la cach\u00e9, los enlaces HTML nuevos usan slugs (aunque esos slugs sigan devolviendo 404 &#8211; eso pasa al caso B). <strong>\u00c9xito (caso B\/C):<\/strong> Friendly URL est\u00e1 en S\u00ed y permanece en S\u00ed tras recargar.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Paso 3 &#8211; Corregir la capa del servidor (Apache o Nginx)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para seguir con la <strong>reescritura de URL PrestaShop<\/strong>, comprueba <strong>Par\u00e1metros avanzados \u2192 Informaci\u00f3n \u2192 Informaci\u00f3n del servidor<\/strong> (o pregunta al hosting). Sigue solo la rama que corresponda a tu servidor.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Si se usa Apache<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Activar <code class=\"codecolorer text default\"><span class=\"text\">mod_rewrite<\/span><\/code> (a menudo ya viene activado).<\/li>\n<li>Confirmar que el document root de la tienda tiene un <code class=\"codecolorer text default\"><span class=\"text\">.htaccess<\/span><\/code> legible que PrestaShop actualiz\u00f3 en el \u00faltimo guardado de SEO.<\/li>\n<li>AllowOverrides debe permitir directivas de reescritura en ese directorio.<\/li>\n<li>Las instalaciones en subdirectorio necesitan un <code class=\"codecolorer text default\"><span class=\"text\">RewriteBase<\/span><\/code> acorde.<\/li>\n<li>Las reglas personalizadas por encima del bloque de PrestaShop pueden cortocircuitar la reescritura &#8211; mueve temporalmente los extras debajo de la secci\u00f3n de PrestaShop para probar.<\/li>\n<li>Tras una edici\u00f3n manual, desactiva y vuelve a activar Friendly URL una vez y guarda para que PrestaShop reescriba su propia secci\u00f3n; luego vuelve a a\u00f1adir solo las l\u00edneas personalizadas que sigan haciendo falta.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u00c9xito:<\/strong> la URL amigable del producto devuelve HTTP 200 con el producto correcto (no la p\u00e1gina 404 por defecto del hosting).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Si se usa Nginx<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"947\" height=\"220\" src=\"https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_2-4.png\" alt=\"Bloque de servidor Nginx donde deben ir las reglas de reescritura de URL PrestaShop\" class=\"wp-image-719\" srcset=\"https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_2-4.png 947w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_2-4-300x70.png 300w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_2-4-768x178.png 768w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_2-4-941x220.png 941w\" sizes=\"auto, (max-width: 947px) 100vw, 947px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx ignora <code class=\"codecolorer text default\"><span class=\"text\">.htaccess<\/span><\/code>. Edita el bloque de servidor del sitio (a menudo en <code class=\"codecolorer text default\"><span class=\"text\">\/etc\/nginx\/sites-available\/<\/span><\/code>):<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>A\u00f1ade el ejemplo actual de reescritura Nginx de PrestaShop desde la <a href=\"https:\/\/devdocs.prestashop-project.org\/9\/basics\/installation\/nginx\/\" target=\"_blank\" rel=\"noopener noreferrer\">documentaci\u00f3n Nginx de PrestaShop 9<\/a> (mant\u00e9n tu root real y el socket PHP-FPM).<\/li>\n<li>Ejecuta <code class=\"codecolorer text default\"><span class=\"text\">nginx -t<\/span><\/code>.<\/li>\n<li>Si la prueba pasa, recarga: <code class=\"codecolorer text default\"><span class=\"text\">systemctl reload nginx<\/span><\/code> (o el equivalente del panel de control del hosting).<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Si un chatbot peg\u00f3 un ejemplo antiguo, sustit\u00fayelo por el bloque oficial de tu versi\u00f3n mayor. Las rutas y las l\u00edneas <code class=\"codecolorer text default\"><span class=\"text\">try_files<\/span><\/code> cambian; fragmentos de foros de hace a\u00f1os son una causa habitual del caso B.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u00c9xito:<\/strong> igual que en Apache &#8211; URL amigable \u2192 200 \u2192 producto correcto. Si un CDN o proxy inverso estaba delante mientras fallaba, purga su cach\u00e9 una vez para que deje de servir 404 en cach\u00e9.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Paso 4 &#8211; Comprobar la reescritura de URL PrestaShop de extremo a extremo<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">No te detengas en \u00ablos enlaces del men\u00fa se ven bonitos\u00bb. Ejecuta esta comprobaci\u00f3n r\u00e1pida en un producto:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ventana privada: abre el producto desde el listado de categor\u00eda.<\/li>\n<li>La barra de direcciones muestra una ruta con slug, no solo <code class=\"codecolorer text default\"><span class=\"text\">id_product<\/span><\/code>.<\/li>\n<li>Copia esa URL amigable y \u00e1brela en una pesta\u00f1a nueva: HTTP 200, mismo producto.<\/li>\n<li>Opcional: solicita un slug incorrecto conocido &#8211; deber\u00edas ver el tema 404 de la tienda, no una p\u00e1gina en blanco del servidor web que nunca lleg\u00f3 a PrestaShop.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Si el Paso 4 falla solo en un segundo dominio mientras el principal pasa, vuelve al caso C (URL multitienda \/ DNS \/ document root) antes de editar de nuevo las reglas de reescritura.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u00c9xito:<\/strong> un producto sobrevive al clic en el listado + recarga directa de la URL amigable.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Paso 5 &#8211; Can\u00f3nicas y 404 residuales<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando la reescritura de URL PrestaShop funciona, cierra el lado SEO para que los buscadores dejen de repartir autoridad entre duplicados y rutas muertas.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>En <strong>Par\u00e1metros de la tienda \u2192 Tr\u00e1fico y SEO<\/strong>, pon <strong>Redireccionar a la URL can\u00f3nica<\/strong> en <strong>301 Moved Permanently<\/strong> en una tienda en producci\u00f3n.<\/li>\n<li>Revisa m\u00f3dulos de terceros que a\u00f1aden URLs de listados o blog &#8211; tambi\u00e9n necesitan can\u00f3nicas coherentes.<\/li>\n<li>Tras renombrar slugs, mover categor\u00edas o cambiar de dominio, a\u00f1ade 301 desde las rutas antiguas (o restaura la entidad). Cambiar el esquema de URL sin redirecciones quema posiciones ya ganadas.<\/li>\n<li>Env\u00eda un sitemap actualizado para que los rastreadores recojan las URLs preferidas &#8211; consulta nuestra <a href=\"https:\/\/presta.site\/blog\/es\/que-es-un-sitemap-y-como-trabajar-con-el-en-prestashop\/\">gu\u00eda de sitemap en PrestaShop<\/a>.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Usa la cobertura de Search Console (o los logs de acceso) para listar rutas 404 reales que siguen llegando al servidor. Corr\u00edgelas con redirecciones o restauraci\u00f3n de contenido &#8211; la reescritura por s\u00ed sola no revive p\u00e1ginas CMS eliminadas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u00c9xito:<\/strong> la opci\u00f3n can\u00f3nica es 301; una ruta alternativa de producto de muestra redirige; los slugs antiguos relevantes est\u00e1n redirigidos o intencionadamente eliminados.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Resumen r\u00e1pido de los 5 pasos<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Nombrar el s\u00edntoma (A sin reescribir \/ B amigable 404 \/ C solo un dominio).<\/li>\n<li>Confirmar Friendly URL en S\u00ed + borrar cach\u00e9 (+ <code class=\"codecolorer text default\"><span class=\"text\">.htaccess<\/span><\/code> escribible en Apache).<\/li>\n<li>Corregir <code class=\"codecolorer text default\"><span class=\"text\">mod_rewrite<\/span><\/code>\/<code class=\"codecolorer text default\"><span class=\"text\">.htaccess<\/span><\/code> en Apache o reglas del bloque de servidor en Nginx.<\/li>\n<li>Comprobar un producto: enlace amigable + recarga directa = 200.<\/li>\n<li>Configurar can\u00f3nicas 301 y limpiar 404 residuales \/ sitemap.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Si solo se recuerda un h\u00e1bito: tras cada cambio, vuelve a probar la misma URL de producto antes de abrir el siguiente ajuste. As\u00ed la reescritura de URL PrestaShop deja de ser un bucle de prueba y error.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>\u00bfFriendly URLs rotas? Sigue esta checklist de 5 pasos de reescritura de URL PrestaShop &#8211; s\u00edntoma, interruptor del Back Office, Apache o Nginx, verificaci\u00f3n y can\u00f3nicas con 404 residuales.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[123],"tags":[],"class_list":["post-1005","post","type-post","status-publish","format-standard","hentry","category-desarrollo"],"_links":{"self":[{"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/posts\/1005","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/comments?post=1005"}],"version-history":[{"count":1,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/posts\/1005\/revisions"}],"predecessor-version":[{"id":1988,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/posts\/1005\/revisions\/1988"}],"wp:attachment":[{"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/media?parent=1005"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/categories?post=1005"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/tags?post=1005"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}