Jump to content

[SOLUCIONADO] Gran problema con URL amigables


El plan de Dan

Recommended Posts

Buenas tardes, queridos compañeros:

 

Tengo un problema que me trae de cabeza desde hace varias semanas. Ya casi tengo a punto la web de Drip&Fresh. Versión 1.5.2 de Prestashop usando el theme Leo Bike de LeoThemes. Este theme me ha dado algún que otro problema porque el autor lo adaptó en seguida, nada más salir la versión 1.5, con lo cual no me extrañaría que tenga alguna incompatibilidad con ciertas funcionalidades como las URL, pero por otra parte espero que no sea así.

 

Ya he hecho todo tipo de combinaciones con la configuración de las URLs y el rendimiento en el backoffice, regenerando siempre las imágenes cada vez que cambio la configuración, y nunca logro que me aparezcan las URL amigables en la barra de dirección. Cada producto y cada páginas del CMS tiene su título amigable, pero a la hora de la verdad esos enlaces no están funcionando.

 

Os adjunto también el contenido del .htaccess, por si fuera algo que yo no pillo. No soy experta en muchas cosas, ya sabéis. Si alguno veis el fallo que yo no encuentro, agradecería que me indiquéis qué tengo que hacer más o menos. No me gustaría dejar así la web, a nivel de SEO queda horrible.

 

Ahí va el contenido del htaccess. Como veréis no se ven tampoco las imágenes a pesar de que las he regenerado:

 

 

# URL rewriting module activation
RewriteEngine on
RewriteCond %{REQUEST_METHOD} !^(TRACE|TRACK|GET|POST|HEAD)$
RewriteRule .* - [F]
RewriteBase /
Options +FollowSymLinks
# URL rewriting rules
RewriteRule ^([a-zA-Z0-9-]*)/([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ product.php?id_product=$2$4 [L,E]
RewriteRule ^([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ product.php?id_product=$1$3 [L,E]
RewriteRule ^([0-9]+)\-([a-zA-Z0-9-]*)(.*)$ category.php?id_category=$1 [QSA,L,E]
RewriteRule ^content/([0-9]+)\-([a-zA-Z0-9-]*)(.*)$ cms.php?id_cms=$1 [QSA,L,E]
RewriteRule ^([0-9]+)__([a-zA-Z0-9-]*)(.*)$ supplier.php?id_supplier=$1$3 [QSA,L,E]
RewriteRule ^([0-9]+)_([a-zA-Z0-9-]*)(.*)$ manufacturer.php?id_manufacturer=$1$3 [QSA,L,E]
# Catch 404 errors
ErrorDocument 404 /404.php

# ~~start~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again
# .htaccess automaticaly generated by PrestaShop e-commerce open-source solution
# http://www.prestashop.com - http://www.prestashop.com/forums

<IfModule mod_rewrite.c>

# Disable Multiviews
Options -Multiviews

RewriteEngine on
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule . - [E=REWRITEBASE:/]
RewriteRule ^api/?(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]

# Images
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1-$2$3$4.jpg [L]
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^([0-9]+)\-([0-9]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1-$2$3.jpg [L]
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg [L]
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^c/([a-zA-Z-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]

# Dispatcher
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^.*$ - [NC,L]
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]
</IfModule>

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType text/css "access plus 1 week"
ExpiresByType text/javascript "access plus 1 week"
ExpiresByType application/javascript "access plus 1 week"
ExpiresByType application/x-javascript "access plus 1 week"
ExpiresByType image/x-icon "access plus 1 year"
</IfModule>

FileETag INode MTime Size
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>

#If rewrite mod isn't enabled
ErrorDocument 404 /index.php?controller=404

# ~~end~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again

 

¿Alguna idea? Ya he leído mucho sobre URL amigables y no encuentro la solución... ¡Gracias de nuevo!

Edited by claramaria (see edit history)
Link to comment
Share on other sites

Gracias, por tu atención, Statictic... Has atinado porque las URL por fin son realmente amigables... ahora el tema es que las imágenes siguen sin verse, pero estamos más cerquita de la solución definitiva. A mí lo que se me hace raro, si abres las rutas de las imágenes, es que corresponden a rutas inexistentes, como si estuvieran en directorios que no están, no logro averiguar cómo se apaña...

 

¿Tendré que hacer algo de esto, que está al final de la pestaña de Imágenes del backoffice, o no tiene nada que ver?

 

 

Usted puede optar por mantener sus imágenes almacenadas en el sistema anterior - lo cual no supone ningún problema.

También puede decidir mover las imágenes en el nuevo sistema de almacenamiento: en este caso, haga clic en \"Mover imágenes\" botón de abajo. Por favor, sea paciente, esto puede tomar varios minutos.

 

Después de mover todas las imágenes de sus productos, para un mejor rendimiento, ajuste la opción \"Usar la imagen heredada de sistema de archivos\" opción antes de \"No\".

Link to comment
Share on other sites

Hola claramaria, lo que comentas de mover las imágenes es porque las habéis movido?

Yo la verdad que nunca he usado esa opción y siempre las he dejado donde están.

En cuanto al problema, supongo que habrás realizado el desarrollo en local y después se han subido los fuentes verdad? A mi en una ocasión me ocurrió algo parecido y el problema estaba en que en la bbdd no se había actualizado la tabla que relaciona las imágenes con los productos.

Link to comment
Share on other sites

Gracias por tu respuesta, jesa. La verdad es que ni he movido las imágenes ni he desarrollado la tienda en local, lleva en el servidor de Loading todo el tiempo. Sé que a otra gente le ha pasado exactamente lo que a mí con las imágenes, pero no me valen sus soluciones (al menos lo que yo he leído), es lo que tiene.

 

¿Cómo se hace eso de relacionar las imágenes con los productos en la base de datos? Puede que vayas por buen camino, ya que los thumbs de las categorías, por ejemplo, sí los veo.

Link to comment
Share on other sites

En base de datos tienes unas tablas ps_image, ps_image_lang, ps_image_shop y ps_image_type.

En principio en ps_image tienes que tener la relación entre el id de la imagen y el id del producto, yo en su día tenía una tienda en producción y al tener que subir unos cambios me dio este error. Al generarse el nombre de las imágenes con el id del producto pensé que no hacía falta, pero sí, hay que relacionarlas en bbdd.

De todos modos, si lo habéis tenido siempre en ese entorno, o se han vaciado tablas o tampoco tendría mucho sentido.

Link to comment
Share on other sites

Si son los tamaños coinciden perfectamente, lo único que ha cambiado es la URL que se ha regenerado con el nuevo htaccess. Estoy pensando, ¿hay algún modo en que pueda dejar las imágenes como estaban con el anterior .htaccess? Quizá así no den problemas... Sigo mirando qué puede ser...

Link to comment
Share on other sites

¡Ya lo tengo!

 

He copiado la parte del htaccess original que se refería a las imágenes, tenía un par de renglones más y ahora las imágenes sí se ven, ni siquiera he tenido que regenerarlas.

 

Tengo por fin las URL amigables y las imágenes funcionando correctamente, ¡mil gracias, chicos! os debo a los dos un buen favor! Me habéis dado las pistas y ayudado a solucionarlo :)

 

Copio el .htaccess completo, sólo hay 2-3 líneas más en la parte #images:

 

# ~~start~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again
# .htaccess automaticaly generated by PrestaShop e-commerce open-source solution
# http://www.prestashop.com - http://www.prestashop.com/forums
<IfModule mod_rewrite.c>
# Disable Multiviews
Options -Multiviews
RewriteEngine on
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule . - [E=REWRITEBASE:/]
RewriteRule ^api/?(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]
# Images
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1-$2$3$4.jpg [L]
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^([0-9]+)\-([0-9]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1-$2$3.jpg [L]
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg [L]
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^c/([a-zA-Z-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]
# Dispatcher
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^.*$ - [NC,L]
RewriteCond %{HTTP_HOST} ^dripandfresh.es$
RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType text/css "access plus 1 week"
ExpiresByType text/javascript "access plus 1 week"
ExpiresByType application/javascript "access plus 1 week"
ExpiresByType application/x-javascript "access plus 1 week"
ExpiresByType image/x-icon "access plus 1 year"
</IfModule>
FileETag INode MTime Size
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>
#If rewrite mod isn't enabled
ErrorDocument 404 /index.php?controller=404
# ~~end~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again

Edited by claramaria (see edit history)
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...