Jump to content

Redirection permanente par htaccess


Recommended Posts

Bonjour à tous,

 

J'ai un problème avec la redirection permanente dans le htaccess.

Je veux rediriger un produit désactivé vers un autre produit, je mets donc ceci dans le htaccess :

 

RedirectPermanent /categorie/1-mon-ancien-produit.html /categorie/2-mon-nouveau-produit.html

 

Le problème c'est que la redirection donne ceci :

http://www.mon-site.com/categorie/1-mon-nouveau-produit.html?id_product=1

 

"?id_product=1" est rajouté automatiquement ce qui fait que je tombe de nouveau sur une page d'erreur ("le produit n'existe plus")

 

Est-ce que quelqu'un a une idée ?

 

Merci d'avance :)

Link to comment
Share on other sites

Bonjour,

 

je serais a ta place je ferais plutôt une 301.

 

Redirect 301 /categorie/1-mon-ancien-produit.html http://www.mon-site.com/categorie/2-mon-nouveau-produit.html

 

Merci pour le conseil Tchupa, en revanche cela ne change rien au problème...

J'aimerais comprendre ce qui rajoute ce code en fin d'URL ?

Link to comment
Share on other sites

  • 2 months later...

Bonjour, j'ai le même souci avec un ?id_product= qui apparait apres la redirection...

 

Suite a un cafouillage dans la sauvegarde d'un produit, j'ai du le recreer par copie. Ainsi, http://www.uvva.fr/s...rete-8j-7n.html est devenu http://www.uvva.fr/s...rete-8j-7n.html

càd, l'ID produit a changé de 8 en 11.

 

La boutique est un sous-dossier /shop/. En racine du site, il y a un blog WordPress.

Les 2 applis ont chacune leur .htaccess, celui de PrestaShop étant généré automatiquement.

 

J'ai donc créé une redirection 301/permanent de l'ancienne page vers la nouvelle.

Mais systématiquement, le résultat s'affiche ainsi :

http://www.uvva.fr/s...ml?id_product=8

Où l'on voit que l'ID de l'ancien produit est rajouté en fin du nom de la nouvelle page, ce qui cause une nouvelle erreur.

 

Cela provient peut-être de ces lignes du .htaccess de PrestaShop généré automatiquement, mais je ne vois pas pourquoi :

RewriteRule ^([0-9]+)\-[a-zA-Z0-9-]*\.html /shop/product.php?id_product=$1 [QSA,L]
ou
RewriteRule ^[a-zA-Z0-9-]*/([0-9]+)\-[a-zA-Z0-9-]*\.html /shop/product.php?id_product=$1 [QSA,L]

à moins que le QSA ne joue un rôle fort dans ce cas précis.

 

J'ai donc testé l'emplacement de ma ligne de redirection

# Produit supprime - DJM - 27112011
Redirect 301 /shop/8-decouverte-de-la-crete-8j-7n.html http://www.uvva.fr/shop/11-decouverte-de-la-crete-8j-7n.html
# End

à divers endroits de mes 2 .htaccess, mais rien n'y fait, j'ai toujours l'apparition du

?id_product= avec l'ID de l'ancien produit qui apparait...

 

Idem avec

Redirect 301 /shop/8-decouverte-de-la-crete-8j-7n.html http://www.uvva.fr/shop/product.php?id_product=11
ou
Redirect 301 /shop/product.php?id_product=8 http://www.uvva.fr/shop/product.php?id_product=11

 

Et là, je sèche... ayant déjà passé plusieurs heures à chercher des idées constructives sur le forum et autres sites...

 

Voilà si qq'un avait une étincelle, je le remercie d'avance...

 

Sincerely

@cybearDJM

Link to comment
Share on other sites

Je complète mon test.

J'ai transformé

 

RewriteRule ^([0-9]+)\-[a-zA-Z0-9-]*\.html /shop/product.php?id_product=$1 [QSA,L]
en
RewriteRule ^([0-9]+)\-[a-zA-Z0-9-]*\.html /shop/product.php?id_product=$1 [L]

en supprimant donc QSA (pour Query String Append - Query String ajouté en fin d'expression).

 

L'URL résultante est toujours http://www.uvva.fr/shop/11-decouverte-de-la-crete-8j-7n.html?id_product=8

Mais cette fois, la page cible s'affiche au lieu de me donner une page "produit indisponible" comme précédemment, comme si la query-string n'était plus prise en compte.

 

Question : quel impact cela aura-t-il sur le reste du fonctionnement du site ?

 

Question subsidiaire : le .htaccess est-il mis "en cache" par le serveur ou y-a-t-il une forme de latence entre la sauvegarde des modifications et leur prise en compte. Après avoir supprimé les lignes de ma redirection, elle a continué à fonctionner... ???

 

Sincerely

@cybearDJM

Link to comment
Share on other sites

Pas de latence, une modif .htaccess est vu immédiatement par le serveur (sauf peut-être sur certains gros clusters - mais on parle de secondes), par contre comme tu as fait une redirection en 301 (Redirect permanent) ton navigateur a détecté la condition et s'est dit que tu étais bête de demander cette page qu'il sait avoir été déplacé de manière permanente ailleurs, donc il a directement émis la nouvelle adresse en demande - vérifie avec l'onglet Réseau de Firebug

Link to comment
Share on other sites

  • 1 month later...
  • 3 weeks later...

Hello !

 

Je me permet d'up le topic pour une question a propos des 301 !

 

Je n'arrive pas à appliquer une simple 301. Pour faire un test, j'ai essayé de rediriger un produit vers un autre (la boutique est en phase de prod donc pas de soucis de référencement, je peux faire des tests).

Mais entre les erreurs 500, l'URL Rewriting, etc, je suis un peu perdu !

 

J'arrive a rediriger mon produit vers google par exemple, mais pas vers une autre URL de ma boutique : O

 

J'ai essayer ceci :

Redirect 301 /14-ancien-produit.html http://www.ndd.fr/product.php?id_product=18

ou ceci :

Redirect 301 /14-ancien-produit.html /18-nouveau-produit.html

Ou encore plein d'autre possibilité, avec les NDD complet (http://NDD.fr/fr/14-...du-produit.html) par exemple, avec ou sans la rééctiture d'URL, mais rien !

 

Un conseil ? : )

 

Merci !

Link to comment
Share on other sites

@Szed:

 

1/ Connaitre ton hébergeur.

2/ Les erreurs 500 proviennent de syntaxe non reconnues/erreurs vérifier tes logs bruts d'erreurs

3/ Est-ce que les url simplifiées fonctionnent au moins sur ton site?

4/ Vérifier l'url à rediriger...

Link to comment
Share on other sites

Hello !

 

Alors, le tout sera hébergé chez OVH.

Ok pour les erreurs 500, j'avais bien vu que ca apparaissaient lorsque je mettais mon code la ou il ne fallait pas.

 

Les URL simplifiées fonctionnent tres bien sur la boutique.

Et l'URL a redirigé fonctionne tres bien également, vu que le produit existe bien.

 

Je crois que c'est un souci de placement de mon code peut être.

Et, est-ce que je dois redirigé vers l'URL simplifié, ou l'URL classique du produit ?

Est-ce que je dois placer mes redirections avant le code de prestashop qui s'occupe de l'url rewriting, ou apres, par exemple ?

 

Merci !

Link to comment
Share on other sites

Placer ton code avant et depuis le BO

 

Repliquer la directive RewriteEngine On en premier

L'url brute si tu termine ta règle avec un [L,QSA]

Si url simplifiée terminer la règle par [N,QSA]

 

Avec ça tu devrais être au point

RewriteEngine On
RewriteRule ^/14-ancien-produit.* /15-nouveau-produit [R=301,N,QSA]
RewriteRule ^/(..)/14-ancien-produit.* /$1/15-nouveau-produit [R=301,N,QSA]

Link to comment
Share on other sites

Hello !

Merci de la réponse !

 

Mais, ça n'a pas beaucoup marché x)

 

Voila ce que j'ai dans mon générateur, dans le BO.

RewriteEngine On
RewriteRule ^/14-ancien-produit.* /15-nouveau-produit [R=301,N,QSA]
RewriteRule ^/(..)/14-ancien-produit.* /$1/15-nouveau-produit [R=301,N,QSA]
RewriteCond %{HTTP_HOST} !^www.mondomaine.fr$
RewriteRule ^(.*) http://www.mondomaine.fr/$1  [QSA,L,R=301]

 

En remplaçant, ancien-produit, et nouveau-produit, par les bonne valeurs, et en essayant avec les url brute avec L,QSA., rien n'y fait :/

 

Cela peut il venir de mes deux dernières lignes ? Elles sont la pour redirigé le mondomaine.fr vers www.mondomaine.fr

Link to comment
Share on other sites

Oopsy comme on dit.

 

J'avais laissé trainer un / en début des règles...

le bon code est donc:

RewriteEngine On
RewriteRule ^14-.*\.html$ /18-vetement-lumineux.html [R=301,N,QSA]
RewriteRule ^(..)/14-.*\.html$ /$1/18-vetement-lumineux.html [R=301,N,QSA]

 

J'avais aussi oublié de filtrer en html (cela aurait été gênant avec certaines catégories)

Link to comment
Share on other sites

Hop !

Ca aurait été trop simple :P

 

RewriteRule ^PBSCProduct.asp?ItmID=666666$ /14-nouveau-produit.html [R=301,N,QSA]
RewriteRule ^(..)/PBSCProduct.asp?ItmID=666666$ /$1/14-nouveau-produit.html [R=301,N,QSA]

 

Ce la ne signifie pas :

"Des qu'il y a dans l'URL PBSCProduct.asp?ItmID=666666, tu redirige sur /14-nouveau-produit.html" ?

 

Ou il y a une nuance avec le .asp? au milieu de l'URL source ?

 

Merci ! :)

Link to comment
Share on other sites

Il y a une nuance car ici tu as une query string...

 

Et le query string ne fait pas a proprement parler de l'url.

 

Il te faut "astucer" le système

# Old catalog redirection
RewriteCond %{QUERY_STRING} ItmID=([^&]*) [NC]
RewriteRule ^PBSCProduct\.asp$ /legacy/%1 [C,QSA,E]

RewriteRule ^legacy/14$  /3-soins-du-visage/8-lait-de-toilette.html? [N,R=301]
RewriteRule ^legacy/13$ /3-soins-du-visage/10-lotion-tonique-asteingeance-renforce.html? [N,R=301]
RewriteRule ^legacy/17$ /3-soins-du-visage/11-lotion-tonique-peau-seche.html? [N,R=301]

 

On commence par ré-écrire la query string dans l'url

Puis on redirige l'url forgé vers le bon produit.

 

ATTENTION le répertoire legacy ne DOIT PAS exister

Link to comment
Share on other sites

Bonjour !

 

Dans ton exemple ci dessus, sur les 3 lignes d'exemples, les 14, 13, et 17, correspond a l'ItmID de l'URL que l'on cherche a rediriger ?

PBSCProduct.asp?ItmID=14 redirigerez vers /3-soins-du-visage/8-lait-de-toilette.html?

 

Si j'ai compris correctement, ça ne fonctionne pas :(

J'avoue ne pas réussir à comprendre pourquoi :)

Link to comment
Share on other sites

Bonjour

 

Même soucis sur mon site, j'ai fais des redirection via le htaccess mais ça me donne des erreurs 404 alors que l'adresse de redirection est correcte...

 

Voici un essai de redirection :

Redirect permanent /modules/blockadvancesearch/advancesearch.php?manufacturer=23 http://NOM_BOUTIQUE/23_ablo
RedirectPermanent /modules/blockadvancesearch/advancesearch.php?category=158 http://NOM_BOUTIQUE/158-les-offres-promotionnelles

 

Une idée d'où ça peut venir ?

 

Cordialement

Mélusine

Link to comment
Share on other sites

Petit up please

 

EDIT : J'ai créer des dossiers pour tester les redirections, lorsque ceux-ci sont à la racine ça fonctionne :

Redirect permanent /a10 http://NOM_BOUTIQUE/a11

 

mais quand ils sont dans le dossier de modules ça ne marche plus :

Redirect permanent /a1 http://NOM_BOUTIQUE/modules/a2

 

Une idée ??

Link to comment
Share on other sites

  • 3 weeks later...

Hello !

Petit up du topic, pour un nouveau petit problème.

 

J'ai un autre type de redirection 301 que je n'arrive pas à faire fonctionner.

L'ancien site avait pour URL par exemple : http://www.mondomaine.com/t-shirt-rouge.htm

J'aimerais la faire rediriger vers : http://www.mondomaine.com/fr/25-t-shirt-rouge.html

 

Mais quelques test ne sont pas concluants x)

RewriteRule ^t-shirt-rouge\.htm$ /25-t-shirt-rouge.html? [N,QSA,E]

 

Merci ! :)

Link to comment
Share on other sites

Hello, petit up !

 

J'ai effectué d'autre test, mais rien de concluant. x)

Y a t'il quelque part un tuto expliquant les redirections 301 chez Prestashop ?

Nottament l'explication des informations entre crochet à la fin des ligne ([N,QSA,E] par exemple).

Link to comment
Share on other sites

  • 3 weeks later...

Bonjour

 

Je reviens vers vous car j'ai finalement trouvé une solution, ça vous aidera peut-être ! J'ai fait mes redirection via PHP finalement, ne trouvant pas pourquoi elles ne fonctionnais pas via le htaccess, voici la syntaxe :

switch ($_SERVER['REQUEST_URI']) {
case '/modules/blockadvancesearch/advancesearch.php?caract_10=599':
header('Location: http://NOM_BOUTIQUE/fr/s/2066/alessi-a-tempo');
break;
case '/modules/blockadvancesearch/advancesearch.php?caract_10=419':
header('Location: http://NOM_BOUTIQUE/fr/s/2067/alessi-adagio');
break;
}

  • Like 1
Link to comment
Share on other sites

  • 2 months later...

Bonjour,

j'ai essayé toutes les combinaisons proposé sur ce site, mais apparemment ca e semble pas fonctionner :-/

 

j'ai 5 pages a redirigé, la 1ere fonctionne, mais les autres non.

 

voici celle qui fonctionne :

RedirectPermanent http://www.ephoneaccess.com/76-iphone-occassion http://www.ephoneaccess.com/76-iphone4-occassion

 

et celle qui ne fonctionne pas :

RedirectPermanent http://www.ephoneaccess.com/62-telephone-portable http://www.ephoneaccess.com/62-telephoneportable

Merci de votre aide.

Link to comment
Share on other sites

Oui, j'ai naturellement essayé, mais j'ai exactement la meme chose.

 

j'ai meme essayé en desactivant l'ecriture d'url ...

RedirectPermanent /category.php?id_category=5 http://www.ephoneaccess.com/category.php?id_category=6

Link to comment
Share on other sites

  • 3 months later...
  • 1 year later...

J'ai trouvé une solution qui fonctionne :

il suffit d'ajouter un point d'interrogation à la fin de l'URL de destination dans le fichier htaccess

 J'ai le même problème et cette "solution" ne m'a pas aidé à la résoudre...

Link to comment
Share on other sites

  • 9 months later...

J'ai trouvé la solution pour rediriger des URLs avec des paramètres get. Pour rediriger http://www.monsite.com/product.php?id=312300&type=4&lg=fr&number=11 vers http://www.monsite.com/ma-categorie/mon-produit mettre ceci TOUT AU DEBUT DU HTACCESS :

RewriteCond %{REQUEST_URI} ^/store/product.php$
RewriteCond %{QUERY_STRING} ^id=312300&type=4&lg=fr&number=11$
RewriteRule ^.*$ http://www.monsite.com/ma-categorie/mon-produit? [L,R=301]

Le point d'interrogation à la fin de la ligne de l'url de destination est important car il permet de ne pas rajouter les paramètres GET à la fin de la nouvelle URL.

Edited by makinero (see edit history)
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...