Jump to content

Problème redirection 301 ne fontcionne pas dans .htaccess


iwebu

Recommended Posts

Bonjour à tous

Suite à la refonte d'un site, anciennement sous prestashop 1.4 et désormais sous prestashop 1.6, je rencontres des difficultés à mettre en place les redirections 301 dans le fichier .htaccess. Chose qui ne pose jamais de problème d'habitude sur n'importe quel site.

Voici le contenue de mon .htaccess :

Redirect 301 /index.php?id_manufacturer=14&controller=manufacturer http://ventedestylo.com/23_monteverde


# ~~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>
<IfModule mod_env.c>
SetEnv HTTP_MOD_REWRITE On
</IfModule>

RewriteEngine on

#Domain: ventedestylo.com
RewriteRule . - [E=REWRITEBASE:/]
RewriteRule ^api$ api/ [L]

RewriteRule ^api/(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]

# Images
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
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]
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]
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]
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]
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]
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]
RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]
# AlphaImageLoader for IE and fancybox
RewriteRule ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]

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

AddType application/vnd.ms-fontobject .eot
AddType font/ttf .ttf
AddType font/otf .otf
AddType font/woff2 .woff2
AddType application/x-font-woff .woff
<IfModule mod_headers.c>
	<FilesMatch "\.(ttf|ttc|otf|eot|woff|woff2|svg)$">
		Header set Access-Control-Allow-Origin "*"
	</FilesMatch>
</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

J'ai bien placé la redirection en haut du fichier .htaccess comme j'ai pu le lire un peu partout. Mais il ne se passe rien, rien du tout !

Dans cet exemple, j'ai pris l'url http://ventedestylo.com/index.php?id_manufacturer=14&controller=manufacturer que l'on trouve dans les résultats Google et qui devrait aujourd'hui pointer vers http://ventedestylo.com/23_monteverde.

La redirection semble pourtant correcte mais il ne se passe absolument rien !

Redirect 301 /index.php?id_manufacturer=14&controller=manufacturer http://ventedestylo.com/23_monteverde

J'ai lu ici et là qu'il fallait mettre un "?" à la fin de la nouvelle url, mais je n'ai jamais mis ça sur d'autres sites et ça fonctionne très bien...

Merci beaucoup pour votre aide !!

 

Link to comment
Share on other sites

2 minutes ago, Mediacom87 said:

Bonjour,

rajoutez avant :


<IfModule mod_rewrite.c>
<IfModule mod_env.c>
SetEnv HTTP_MOD_REWRITE On
</IfModule>

RewriteEngine on

 

Bonjour

Merci pour votre réponse. Ce bout de code est bien présent un peu plus bas dans le .htaccess. Mais étant donné que ma redirection est placée en haut, je l'ai ajouté avant pour un faire un test... et toujours rien. Je ne comprends vraiment pas pourquoi. Y t'il une option à cocher dans l'administration de prestashop ou autre ?

C'est un peu gênant car les url des marques ne sont plus les mêmes et du coup les liens encore présent dans les résultats de google ne sont pas bons.

 

Link to comment
Share on other sites

il n'est pas possible de rediriger les QUERY_STRING de cette manière.
Elles ne font pas partie de l'url

Par ailleurs le / de début n'est jamais présent dans un .htaccess

Soit:
 

RewriteCond %{QUERY_STRING} id_manufacturer=14&controller=manufacturer
RewriteRule .* http://ventedestylo.com/23_monteverde [R=301,L,QSD]

ou

RewriteCond %{REQUEST_URI}  /index.php?id_manufacturer=14&controller=manufacturer
RewriteRule .* http://ventedestylo.com/23_monteverde [R=301,L,QSD]

 

Perso je ferai ceci

RewriteCond %{QUERY_STRING} id_manufacturer=14
RewriteCond %{QUERY_STRING} controller=manufacturer
RewriteRule index.php /index.php?controller=manufacturer&id_manufacturer=23 [QSD,L]

 

Link to comment
Share on other sites

11 hours ago, doekia said:

il n'est pas possible de rediriger les QUERY_STRING de cette manière.
Elles ne font pas partie de l'url

Par ailleurs le / de début n'est jamais présent dans un .htaccess

Soit:
 


RewriteCond %{QUERY_STRING} id_manufacturer=14&controller=manufacturer
RewriteRule .* http://ventedestylo.com/23_monteverde [R=301,L,QSD]

ou


RewriteCond %{REQUEST_URI}  /index.php?id_manufacturer=14&controller=manufacturer
RewriteRule .* http://ventedestylo.com/23_monteverde [R=301,L,QSD]

 

Perso je ferai ceci


RewriteCond %{QUERY_STRING} id_manufacturer=14
RewriteCond %{QUERY_STRING} controller=manufacturer
RewriteRule index.php /index.php?controller=manufacturer&id_manufacturer=23 [QSD,L]

 

Bonjour

Merci pour cette réponse. J'ai testé les trois solution et aucune ne fonctionne, elles provoquent même une erreur :

image.thumb.png.963d3a9eb0245028875396ddce77bc3e.png

Mais peut être que je n'ai pas inséré tes règles au bon endroit. Peux tu m'indiquer où les ajouter dans le .htaccess ?

Merci.

Link to comment
Share on other sites

2 hours ago, doekia said:

à l'intérieur d'un bloc


<IfModule mod_rewrite.c>
  RewriteEngine On
  
  ...

</IfModule>

En tête de fichier, avant la section prestashop.

Mais pour connaître la cause vraie, pas de peut-être, lire ton log serveur

Merci encore !

Je viens d'essayer comme ceci :


<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteCond %{QUERY_STRING} id_manufacturer=14&controller=manufacturer
	RewriteRule .* http://ventedestylo.com/23_monteverde [R=301,L,QSD]
</IfModule>


# ~~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>
<IfModule mod_env.c>
SetEnv HTTP_MOD_REWRITE On
</IfModule>

RewriteEngine on

#Domain: ventedestylo.com
RewriteRule . - [E=REWRITEBASE:/]
RewriteRule ^api$ api/ [L]

RewriteRule ^api/(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]

# Images
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
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]
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]
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]
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]
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]
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]
RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]
# AlphaImageLoader for IE and fancybox
RewriteRule ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]

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

AddType application/vnd.ms-fontobject .eot
AddType font/ttf .ttf
AddType font/otf .otf
AddType font/woff2 .woff2
AddType application/x-font-woff .woff
<IfModule mod_headers.c>
	<FilesMatch "\.(ttf|ttc|otf|eot|woff|woff2|svg)$">
		Header set Access-Control-Allow-Origin "*"
	</FilesMatch>
</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

Mais ça ne fonctionne pas non plus toujours la même erreur. Je vais voir pour essayer de voir les logs serveur mais je ne suis pas sure d'y avoir accès.

Merci.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...