[resolu]Redirection categories vers fiches produits |
Bienvenue invité ( Connexion | Inscription )
[resolu]Redirection categories vers fiches produits |
2 Sep 2013, 18:28
Message
#1
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 122 Inscrit : 23-July 09 Lieu : Aveyron Membre no 25830 |
Bonsoir, je viens de réorganiser mon e-commerce en supprimant des sous-catégories. Je souhaite rediriger ses sous catégories vers la fiche du produit qui correspond.
J'ai donc dans le .htaccess mis RedirectPermanent /catalog/fsdfsdfd-c-1_1.html http://www.exemple.fr/catalog/-p-1.html La 301 fonctionne bien mais j'ai une variable cPath en fin d'url. http://www.exemple.fr/catalog/-p-1.html?cPath=1_1 Comment enlever la variable cPath en fin d'url ? Ce message a été modifié par gaet - 5 Sep 2013, 16:20. -------------------- OScommerce 2.2RC1 : featured-products, Ajax shopingcart, who's online enhancement, product lising columns, how did you hear, Easy graphical border, ot discount coupons, show sub categories onmouse over, maincats, URL Rewriting, header tag seoV 3.1.8
|
|
3 Sep 2013, 00:15
Message
#2
|
|
5eme dan OSC Groupe : Administrateur Messages : 9221 Inscrit : 4-March 03 Lieu : Pau Membre no 927 |
Bonjour,
Je pense que tu ne pourras pas depuis le htaccess car tu renvoie vers l'url-rewriting qui reprends les variables GET en fin de lien Il me paraitrait plus logique de faire une redirection depuis le code PHP avec un tep_redirect() un truc du genre : if($current_category == '101') tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO,'products_id=101')); Mais tu peux aussi intercepter le $cPath... ça me parait bien plus effectif que de passer par un redirectPermanent tep_redirect change le header(location) tu peux aménager la fonction en y ajoutant un paramètre $type qui te permettrait d'insérer une entête header("Status: 301 Moved Permanently"); avant le location. ta déclaration de fonction devient Code function tep_redirect($url,$type=''){... avec dedans un Code if($type=='301') header("Status: 301 Moved Permanently"); ton lien de redirection devriendrait alors : Code tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO,'products_id=101'),'301'); et hop, ton url_rewriting s'y retrouve et google est content -------------------- Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues : Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums. Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin. ----------------------------- Quelques sites de référence --------------------------- PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien) |
|
3 Sep 2013, 09:34
Message
#3
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 122 Inscrit : 23-July 09 Lieu : Aveyron Membre no 25830 |
Bonjour merci de m'avoir répondu, j'utilisais avant des 301 vers la page d'accueil ceci ne me donnait aucune variable mais pour ses catégories il est plus pertinent de les rediriger vers des fiches produits.
J n'ai jamais fait de 301 via php. Je dois les mettre dans quel fichier ? Je vais essayer de trouver des informations la dessus plus détaillées. -------------------- OScommerce 2.2RC1 : featured-products, Ajax shopingcart, who's online enhancement, product lising columns, how did you hear, Easy graphical border, ot discount coupons, show sub categories onmouse over, maincats, URL Rewriting, header tag seoV 3.1.8
|
|
3 Sep 2013, 13:29
Message
#4
|
|
5eme dan OSC Groupe : Administrateur Messages : 9221 Inscrit : 4-March 03 Lieu : Pau Membre no 927 |
Ce n'est pas à proprement parler "via PHP" mais plutôt en exploitant les fonctionnalités osCommerce
Un tep_redirect doit être mis de préférence dans application_top.php puisqu'il envoie un header, il faut le faire avant tout code affiché. Normalement, tu dois avoir dans application_top.php la variable $current_category_id qui est construite automatiquement à partir de $cPath dans le bas de application_top.php tu peux donc ajouter un test sur cette variable : Code if (isset($current_category_id) && $current_category_id == "ID de ta catégorie à rediriger") tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . "ID du produit destinataire")); cela fonctionne mais fait une redirection standard (302 je crois) Si tu veux un 301 il faut ajouter l'entête header("Status: 301 Moved Permanently"); et donc modifier la fonction tep_redirect (comme indiqué précédemment) que tu trouveras dans functions/general.php Dans le principe quand la catégorie pointée est celle que tu veux rediriger, la redirection est faite avant l'affichage vers la page de destination souhaitée : ici la page produit. Sur cette base, avec très peu de code supplémentaire, tu pourrais même ajouter un moidule de commande depuis l'administration pour ajouter ou retirer une redirections. Mais ce n'est peut-être pas utile dans ton cas. -------------------- Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues : Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums. Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin. ----------------------------- Quelques sites de référence --------------------------- PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien) |
|
3 Sep 2013, 13:48
Message
#5
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 122 Inscrit : 23-July 09 Lieu : Aveyron Membre no 25830 |
J'ai juste cinq redirections à faire ce n'est donc pas utile d'avoir la gestion dans l'administration.
J'ai ajouté au bas d'application-top Code if (isset($current_category_id) && $current_category_id == "112_113") tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . "3674")); Peut être que le code ne marche pas car c'est une sous-catégorie. La catégorie 112 se retrouve introuvable. -------------------- OScommerce 2.2RC1 : featured-products, Ajax shopingcart, who's online enhancement, product lising columns, how did you hear, Easy graphical border, ot discount coupons, show sub categories onmouse over, maincats, URL Rewriting, header tag seoV 3.1.8
|
|
3 Sep 2013, 15:21
Message
#6
|
|
Ceinture marron OSC Groupe : Membres Messages : 1665 Inscrit : 3-June 09 Membre no 25501 |
pourtant gnidhal l'explique bien : la variable $current_category_id est construite automatiquement à partir de $cPath.
112_113 n'est pas un categories_id issue de la base données, mais un chemin. |
|
3 Sep 2013, 15:30
Message
#7
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 122 Inscrit : 23-July 09 Lieu : Aveyron Membre no 25830 |
Merci pour la rectification FoxP2 et encore merci à Gnidhal. Je confirme que j'obtiens une 302.
Par contre pour avoir la redirection 301 dans general.php j'ai Code function tep_redirect($url) { if ( (strstr($url, "\n") != false) || (strstr($url, "\r") != false) ) { tep_redirect(tep_href_link(FILENAME_DEFAULT, '', 'NONSSL', false)); } if ( (ENABLE_SSL == true) && (getenv('HTTPS') == 'on') ) { // We are loading an SSL page if (substr($url, 0, strlen(HTTP_SERVER)) == HTTP_SERVER) { // NONSSL url $url = HTTPS_SERVER . substr($url, strlen(HTTP_SERVER)); // Change it to SSL } } $url = str_replace('&', '&', $url); session_write_close(); header('Location: ' . $url); exit; } Je dois donc y insérer ? Code tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO,'products_id=101'),'301'); A quel endroit ? Ce message a été modifié par gaet - 3 Sep 2013, 19:00. -------------------- OScommerce 2.2RC1 : featured-products, Ajax shopingcart, who's online enhancement, product lising columns, how did you hear, Easy graphical border, ot discount coupons, show sub categories onmouse over, maincats, URL Rewriting, header tag seoV 3.1.8
|
|
4 Sep 2013, 21:58
Message
#8
|
|
5eme dan OSC Groupe : Administrateur Messages : 9221 Inscrit : 4-March 03 Lieu : Pau Membre no 927 |
bah regarde mon exemple au départ.
Il faut modifier cette fonction comme indiqué plus haut mais j'aurais plus vite fait de la réécrire ici : Code function tep_redirect($url,$type='') { if ( (strstr($url, "\n") != false) || (strstr($url, "\r") != false) ) { tep_redirect(tep_href_link(FILENAME_DEFAULT, '', 'NONSSL', false)); } if ( (ENABLE_SSL == true) && (getenv('HTTPS') == 'on') ) { // We are loading an SSL page if (substr($url, 0, strlen(HTTP_SERVER)) == HTTP_SERVER) { // NONSSL url $url = HTTPS_SERVER . substr($url, strlen(HTTP_SERVER)); // Change it to SSL } } $url = str_replace('&', '&', $url); session_write_close(); if($type=='301') header("Status: 301 Moved Permanently"); header('Location: ' . $url); exit; } et ton lien précédent qui n'est pas dans la fonction mais dans ton application_top(tu l'as déjà réalisé) qui donne un 302 est à modifier comme suit : Code tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . "3674"),'301'); La redirection sera un 301 puisqu'on passe le paramètre à la fonction qui se chargera d'ajouter l'entête qui va bien. allez, au boulot ! -------------------- Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues : Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums. Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin. ----------------------------- Quelques sites de référence --------------------------- PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien) |
|
5 Sep 2013, 07:36
Message
#9
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 122 Inscrit : 23-July 09 Lieu : Aveyron Membre no 25830 |
Merci beaucoup tout fonctionne parfaitement.
Si je supprime de la BDD ses sous catégories que j'ai dirigés. Cela pose t'il un problème ? -------------------- OScommerce 2.2RC1 : featured-products, Ajax shopingcart, who's online enhancement, product lising columns, how did you hear, Easy graphical border, ot discount coupons, show sub categories onmouse over, maincats, URL Rewriting, header tag seoV 3.1.8
|
|
5 Sep 2013, 16:14
Message
#10
|
|
5eme dan OSC Groupe : Administrateur Messages : 9221 Inscrit : 4-March 03 Lieu : Pau Membre no 927 |
Ha ! j'ai un doute, ne supprime rien pour le moment : je crains que si la catégorie n'existe plus ça génère une erreur de redirection en boucle!
Avec le test sur $current_category_id il se peut que tu ne puisses supprimer les catégories et la redirection que quand tu seras certain que GG et les autres moteurs a bien enregistré la redirection. Quelques jours ? quelques semaines ? Fais un test pour voir. Si ça plante il y a une possibilité de travailler sur le $_GET['cPath'] plutôt que sur le $current_category_id voici ce que tu devrais mettre dans ton application_top en complétant avec toutes tes catégories et les bons products_id de produit (et en supprimant les précédentes redirections) Code if (isset($_GET['cPath'])) { dans ce cas tu pourras dégager les catégories périmées puisque le test se fera assurément sur le paramètre entrant GET['cPath']
$cParray = explode('_', $_GET['cPath']); if (in_array('id de ta catégorie périmée',$cParray )) tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . "3674"),'301'); // ligne ci dessus à répéter pour chacune des catégories périmées } -------------------- Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues : Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums. Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin. ----------------------------- Quelques sites de référence --------------------------- PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien) |
|
5 Sep 2013, 16:19
Message
#11
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 122 Inscrit : 23-July 09 Lieu : Aveyron Membre no 25830 |
Encore merci pour la réponse. Je vais simplement les laisser cela n'est pas gênant. J'ai donc bien fait de ne rien supprimer.
-------------------- OScommerce 2.2RC1 : featured-products, Ajax shopingcart, who's online enhancement, product lising columns, how did you hear, Easy graphical border, ot discount coupons, show sub categories onmouse over, maincats, URL Rewriting, header tag seoV 3.1.8
|
|
14 Jul 2015, 02:51
Message
#12
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 131 Inscrit : 9-April 10 Membre no 27422 |
Bonjour,
J'ai le même problème mais j'aimerais faire des redirections d'anciennes catégories vers de nouvelles. Comment modifier ceci pour que ce soit adapté à des redirections de catégories et non vers des pages produits ? Citation tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO,'products_id=101'),'301'); Merci pour votre aide. -------------------- Oscommerce 2.3.4 BS
|
|
14 Jul 2015, 12:10
Message
#13
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 131 Inscrit : 9-April 10 Membre no 27422 |
Bon, c'est résolu, voilà ce que j'ai fais :
J'ai fais les modifications nécessaires dans general.php, puis dans index.php dans <head> j'ai ajouté ceci : Citation <?Php if ((int) $current_category_id == '40') { tep_redirect(tep_href_link("xxx-c-42.html"),'301'); } ?> Et ça marche -------------------- Oscommerce 2.3.4 BS
|
|
Version bas débit | Nous sommes le : 28th March 2024 - 16:19 |
Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |