En un sitio PrestaShop, el.htaccess es esencial para que muchas funciones funcionen correctamente. Gestiona las URL reescritas, la seguridad, el rendimiento y el mantenimiento. Comprender esto le ayudará a evitar numerosos errores y a aprovechar al máximo las capacidades de la plataforma.
¿Cuál es el.htaccess en PrestaShop?
.htaccess es un archivo de configuración para el servidor Apache. En PrestaShop, este archivo se genera automáticamente desde el back office, en función de las opciones activadas (como URL simplificadas o reescritura de URL).
Permite a PrestaShop :
- gestionar URL "limpias" (por ejemplo, :
/t-shirts/5-tshirt-bleu.htmlen lugar deindex.php?id_product=5) - redirigir ciertas páginas (301 302)
- proteger archivos o carpetas sensibles
- mejorar la seguridad y el rendimiento
| 📝 Suele encontrarse en la raíz de la tienda, normalmente en la carpeta pública de su alojamiento. Puede utilizarse en otros lugares para proteger determinados archivos. |
Cómo gestiona PrestaShop.htaccess ?
Generación automática
PrestaShop genera o actualiza el archivo.htaccess :
- Alactivar las URL simplificadas (SEO & URL > "URL simplificada")
- Al restablecer las URL mediante el botón "Generar archivo
.htaccess"en la trastienda - Al instalar determinados módulos
El contenido se estructura automáticamente entre dos :
# ~~start~~ Do not remove this comment, PrestaShop uses it to build your .htaccess file ... # ~~end~~
| ⚠️ Nunca modifique este bloque directamente a mano: PrestaShop lo reescribe automáticamente. |
Usos prácticos del fichero.htaccess en PrestaShop
⚠️ Manipulación de archivos.htaccessno es recomendable para principiantes. Aunque tenga la experiencia necesaria, guarde siempre su archivo .htaccess antes de modificarlo. |
1. Reescritura de URL
Para URL legibles y optimizadas para SEO.
RewriteEngine on RewriteRule ^t-shirts/5-tshirt-bleu.html$ product.php?id_product=5 [QSA,L]
2. asegurar ciertos archivos sensibles
Impide el acceso directo a los archivos de configuración o de registro.
<FilesMatch "\\.(tpl|ini|log|conf|sql)$"> Order Allow,Deny Deny from all </FilesMatch>
3. forzar HTTPS
Redirige todas las peticiones a la versión HTTPS del sitio.
Active también en el back office: "Activar SSL" en Ajustes > General.
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
4. redireccionamientos personalizados
No recomendada para principiantes, esta opción es útil tras la eliminación de productos, la revisión del catálogo, los cambios de URL o la redirección a una página de mantenimiento. Existen diferentes sintaxis para diferentes necesidades.
Por ejemplo, para redirigir a un nuevo producto:
Redirect 301 /ancien-produit.html /nouveau-produit.html
Riesgos de una mala manipulación
- Sitio inaccesible si error de sintaxis
- Problemas de navegación (bucles de redirección, errores 500)
- Desactivación involuntaria de módulos o de la oficina delantera
- Problemas de SEO (páginas no indexadas, errores 404)
Buenas prácticas
-
Haga siempre una copia de seguridad del archivo
.htaccessantes de la modificación. - No modifique el bloque generado automáticamente por PrestaShop (
# ~~start~~ ... # ~~end~~) - Utilice un editor de texto fiable (VS Code, Notepad++, etc.)
- Pruebe los cambios en un entorno de preproducción si es posible. También existen herramientas en línea para ver estos cambios.
- Recuerde borrar la caché de PrestaShop después de realizar cualquier cambio.
Ejemplo de.htaccess típico en PrestaShop
<IfModule mod_rewrite.c>
RewriteEngine on
# Redirection vers HTTPS
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# URL rewriting (section générée automatiquement)
# ~~start~~ Do not remove this comment...
RewriteRule ^fr/t-shirts/5-tshirt-bleu.html$ product.php?id_product=5 [QSA,L]
# ~~end~~
# Sécurité
<FilesMatch "\\.(tpl|ini|log|conf|sql)$">
Order Allow,Deny
Deny from all
</FilesMatch>
# Redirection temporaire vers maintenance
# (décommenter si nécessaire)
# RewriteCond %{REQUEST_URI} !^/maintenance.html$
# RewriteCond %{REMOTE_ADDR} !^123\\.456\\.789\\.000$
# RewriteRule ^.*$ /maintenance.html [R=302,L]
</IfModule>
Caso especial: Multi-boutiques y.htaccess
En modo multitienda, PrestaShop puede crear varios bloques.htaccess para cada dominio o subcarpeta. Deberá tener aún más cuidado con la coherencia de las reglas si personaliza el archivo manualmente.