Ultimate SEO URLs (suppression .html), Comment supprimer les .html sans faire buguer Ultimate SEO ? |
Bienvenue invité ( Connexion | Inscription )
Ultimate SEO URLs (suppression .html), Comment supprimer les .html sans faire buguer Ultimate SEO ? |
12 Apr 2018, 14:04
Message
#1
|
|
Ceinture marron OSC Groupe : Membres Messages : 1441 Inscrit : 24-April 03 Membre no 1102 |
Bonjour à tous et toute !
J'ai hérité d'un osc commerce MS2 avec Ultimate SEO URLs. Depuis peux ont me demande d'améliorer les URLS pour le référencement, donc dans ce cadre je dois supprimer les .html à la fin des url. Vous allez me dire qu'il suffit d'aller dans le .htaccess et le includes/class/seo.class.php et remplacer les: Code '.html" par Code '/' Cela fonctionne au premier abord, mais il me génère un bug très facheu, cela supprime la redirection "corrective" des espaces vers les tirets et génère donc des pages en doublons, voir plus.. ce qui donne ceci ce-est-un-exemple/ mais aussi ceciestunexemple/ ou encore ceci-----est--unexemple/ etc... bref la redirection de ceciestunexemple/. ---> ce-est-un-exemple/. ne fonctionne plus... Je pense que la solution ce trouve dans le seo.class.php Peut être ici mais je ne suis pas sur...: Code switch(true){ case ($this->is_attribute_string($this->uri)): $this->need_redirect = false; break; case ($this->uri != $this->real_uri && !$this->not_null($this->path_info)): if (($pStart = strpos($this->uri_parsed['path'], "-p-")) !== FALSE) { if (($pStop = strpos($this->uri_parsed['path'], ".html")) !== FALSE) { $forceRedirect = $this->VerifyLink($pStop, $pStart); //remove things that shouldn't be there if ($this->attributes['USE_SEO_PERFORMANCE_CHECK'] == 'true') $this->performance['NUMBER_QUERIES']++; $pID = substr($this->uri_parsed['path'], $pStart + 3, -(strlen($this->uri_parsed['path']) - $pStop)); $sqlCmd = $this->attributes['USE_SEO_HEADER_TAGS'] == 'true' ? 'IF(products_head_title_tag_url !="",products_head_title_tag_url,products_name) as pName' : 'products_name as pName'; $sql = "SELECT " . $sqlCmd . " FROM `products_description` WHERE products_id='".(int)$pID."' AND language_id='".(int)$this->languages_id."' LIMIT 1"; $result = $this->DB->FetchArray( $this->DB->Query( $sql ) ); $cName = ''; if ($this->attributes['SEO_ADD_CPATH_TO_PRODUCT_URLS'] == 'true') { $cName = $this->get_all_category_parents($pID, $cName); $cName = str_replace(" ", "-", $cName) . '-'; } $pName = $cName . $this->strip( $result['pName'] ); if ($forceRedirect || ($pName !== substr($this->uri_parsed['path'], 0, $pStart))) { $this->uri_parsed['path'] = $pName . "-p-" . $pID . ".html"; $this->need_redirect = true; $this->do_redirect(); } } } Merci pour votre aide.. Ce message a été modifié par polo - 12 Apr 2018, 14:06. -------------------- OSC 2.1.3 et MS2 (PHP Version 5.2.17)
|
|
12 Apr 2018, 14:24
Message
#2
|
|
Ceinture marron OSC Groupe : Membres Messages : 1441 Inscrit : 24-April 03 Membre no 1102 |
C'est plus précisément cette fonction la:
Code function strip($string){
if (CHARSET == 'utf-8') { $string = iconv("ISO-8859-1", "UTF-8//TRANSLIT", $string); } if ( is_array($this->attributes['SEO_CHAR_CONVERT_SET']) ) $string = strtr($string, $this->attributes['SEO_CHAR_CONVERT_SET']); $pattern = $this->attributes['SEO_REMOVE_ALL_SPEC_CHARS'] == 'true' ? "([^[:alnum:]])" : "/[^a-z0-9- ]/i"; $string = preg_replace('/(('))/', '-', strtolower($string)); //remove apostrophe - not caught by above $anchor = preg_replace($pattern, '', strtolower($string)); $pattern = "([[:space:]]|[[:blank:]])"; $anchor = preg_replace($pattern, '-', $anchor); return $this->short_name($anchor); // return the short filtered name } # end function -------------------- OSC 2.1.3 et MS2 (PHP Version 5.2.17)
|
|
12 Apr 2018, 16:40
Message
#3
|
|
Ceinture marron OSC Groupe : Modérateurs Messages : 1543 Inscrit : 30-May 06 Lieu : Vichy (03) Membre no 10583 |
Bonjour,
Je viens de tester en local rien qu'en modifiant le .htaccess et en remplaçant les ".html" et '.html' par "/" et '/' dans catalog/includes/classes/seo.class.php et je n'ai pas les erreurs évoquées. Cela fonctionne parfaitement pour moi. Mon site Ms2.2 est en utf8 et ma function strip est différente par rapport à la tienne : Code function strip($string){ if ( is_array($this->attributes['SEO_CHAR_CONVERT_SET']) ) $string = strtr($string, $this->attributes['SEO_CHAR_CONVERT_SET']); $pattern = $this->attributes['SEO_REMOVE_ALL_SPEC_CHARS'] == 'true' ? "/([^[:alnum:]])+/u" : "/([[:punct:]])+/u"; $anchor = preg_replace($pattern, '', strtolower($string)); $pattern = "/([[:space:]]|[[:blank:]])+/u"; $anchor = preg_replace($pattern, '-', $anchor); return $this->short_name($anchor); // return the short filtered name } # end function PS : la même question a été posée sur le forum US et est restée sans réponse ... -------------------- Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse) Config 2 en local avec UwAmp : Osc Phoenix |
|
12 Apr 2018, 16:53
Message
#4
|
|
Ceinture marron OSC Groupe : Membres Messages : 1441 Inscrit : 24-April 03 Membre no 1102 |
Bonjour et merci Bonbec,
çà fait plaisir de voir encore des oscommercien.. J'ai mis en place ton code mais çà n'y change rien, la redirection des espaces en tiret ne fonctionne plus.. (testé sur 2 boutiques) Y'aurais moyen d'avoir ton fichier seo.class.php ? car je me demande si c'est bien ce bout de code qui gère çà. Et sinon, tu as raison, j'ai vue des réponses dans les forums US mais personne ne parle de ce bug. -------------------- OSC 2.1.3 et MS2 (PHP Version 5.2.17)
|
|
12 Apr 2018, 17:49
Message
#5
|
|
Ceinture marron OSC Groupe : Modérateurs Messages : 1543 Inscrit : 30-May 06 Lieu : Vichy (03) Membre no 10583 |
Même question ici.
Envoie moi ton adresse mail par MP. -------------------- Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse) Config 2 en local avec UwAmp : Osc Phoenix |
|
23 Apr 2018, 15:23
Message
#6
|
|
Ceinture marron OSC Groupe : Membres Messages : 1441 Inscrit : 24-April 03 Membre no 1102 |
Salut BONBEC,
Alors j'ai mis ton fichiers seo.class.php Le HTML à a fin est bien supprimé, mais la réécriture, quand tu supprime un tiret de marche pas, ce qui créer donc une duplication de page.. voir plus... Sinon, ton htaccess ressemble bien à çà ?: Code php_flag register_globals on Options +SymLinksIfOwnerMatch RewriteEngine On RewriteCond %{HTTP_HOST} ^treuil4x4.com$ RewriteRule ^(.*) http://www.monsite.com/$1 [QSA,L,R=301] RewriteBase /catalogue/ RewriteRule ^(.*)-p-(.*)$ details.php?products_id=$2&%{QUERY_STRING} [L] RewriteRule ^(.*)-c-(.*)$ index.php?cPath=$2&%{QUERY_STRING} [L] RewriteRule ^(.*)-m-([0-9]+)$ index.php?manufacturers_id=$2&%{QUERY_STRING} [L] RewriteRule ^(.*)-pi-([0-9]+)$ tell_a_friend.php?pID=$2&%{QUERY_STRING} [L] RewriteRule ^(.*)-pi-([0-9]+)$ popup_image.php?pID=$2&%{QUERY_STRING} [L] RewriteRule ^(.*)-t-([0-9]+)$ articles.php?tPath=$2&%{QUERY_STRING} [L] RewriteRule ^(.*)-a-([0-9]+)$ article_info.php?articles_id=$2&%{QUERY_STRING} [L] RewriteRule ^(.*)-pr-([0-9]+)$ product_reviews.php?products_id=$2&%{QUERY_STRING} [L] RewriteRule ^(.*)-pri-([0-9]+)$ product_reviews_info.php?products_id=$2&%{QUERY_STRING} [L] RewriteRule ^(.*)-i-([0-9]+)$ information.php?info_id=$2&%{QUERY_STRING} [L] Options +MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.php [NC,L] Je t’envoies en pm le site... veux pas faire de pub... -------------------- OSC 2.1.3 et MS2 (PHP Version 5.2.17)
|
|
25 Apr 2018, 14:57
Message
#7
|
|
Ceinture marron OSC Groupe : Modérateurs Messages : 1543 Inscrit : 30-May 06 Lieu : Vichy (03) Membre no 10583 |
Bonjour,
Désolé pour le temps de réponse, ordi en panne Code RewriteRule ^(.*)-p-(.*)/$ product_info.php?products_id=$2&%{QUERY_STRING} J'ai un slash / avant le $ product_info.php?... Je n'ai pas Options +MultiViews dans mon .htaccess -------------------- Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse) Config 2 en local avec UwAmp : Osc Phoenix |
|
25 Apr 2018, 15:16
Message
#8
|
|
Ceinture marron OSC Groupe : Membres Messages : 1441 Inscrit : 24-April 03 Membre no 1102 |
Bonjour bonbec,
Ahh l'informatique ! Bon , bah çà n'y change rien Et chez toi tous fonctionne ? les tirets réapparaissent ? si tu les supprimes ? cela ne peux qu'être dans : includes/functions/html_output.php ? Et sinon, tu utilise quelle version, ltimate SEO URLs v2.2d ? La je sèche car kle code reste celui d'origine: includes/functions/html_output.php Code //// // Ultimate SEO URLs v2.2d // The HTML href link wrapper function function tep_href_link($page = '', $parameters = '', $connection = 'NONSSL', $add_session_id = true, $search_engine_safe = true) { global $seo_urls; if ( !is_object($seo_urls) ){ if ( !class_exists('SEO_URL') ){ include_once('includes/classes/seo.class.php'); } global $languages_id; $seo_urls = new SEO_URL($languages_id); } return $seo_urls->href_link($page, $parameters, $connection, $add_session_id); } -------------------- OSC 2.1.3 et MS2 (PHP Version 5.2.17)
|
|
25 Apr 2018, 15:35
Message
#9
|
|
Ceinture marron OSC Groupe : Modérateurs Messages : 1543 Inscrit : 30-May 06 Lieu : Vichy (03) Membre no 10583 |
Re,
Ben j'suis un vieux truc moi ! C'est la version 2.1 Code // Ultimate SEO URLs v2.1 // The HTML href link wrapper function function tep_href_link($page = '', $parameters = '', $connection = 'NONSSL', $add_session_id = true, $search_engine_safe = true) { global $seo_urls; if ( !is_object($seo_urls) ){ if ( !class_exists('SEO_URL') ){ include_once(DIR_WS_CLASSES . 'seo.class.php'); } global $languages_id; $seo_urls = new SEO_URL($languages_id); } return preg_replace('/&/u','&',$seo_urls->href_link($page, $parameters, $connection, $add_session_id)); } Pour l'histoire des tirets, faut que je re-installe la copie de mon DD pour récupérer le site test. -------------------- Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse) Config 2 en local avec UwAmp : Osc Phoenix |
|
25 Apr 2018, 15:49
Message
#10
|
|
Ceinture marron OSC Groupe : Modérateurs Messages : 1543 Inscrit : 30-May 06 Lieu : Vichy (03) Membre no 10583 |
Cela a été vite à recopier, ouf !
Que l'url soit : .../sncf-rev-2x2-plaques-p-1197/ ou .../sncfrev-2x2-plaques-p-1197/ ou .../sncfrev2x2plaques-p-1197/ etc ... j'arrive toujours la bonne page produit et les tirets ne réapparaissent pas dans l'url. Ce qui est logique puisque c'est le -p-1197 qui indique l'id du produit pour le faire afficher dans product_info.php Par contre quand tu dis que cela t'affiche la page en double, çà veut dire 2 fois le même affichage dans la même page ou tu penses juste à un éventuel duplicate content ? Si c'est le duplicate, cela le fait sur tous les sites même quand il y a le .html -------------------- Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse) Config 2 en local avec UwAmp : Osc Phoenix |
|
25 Apr 2018, 15:58
Message
#11
|
|
Ceinture marron OSC Groupe : Membres Messages : 1441 Inscrit : 24-April 03 Membre no 1102 |
Je crois qu'ont c'est mal compris.
J'ai vue çà avec un référenceur, il me dit que le fait que les espaces ne redirigent pas vers les tirets, ce n'est pas bon pour le référencement. Car google estime que tu possède plusieurs pages identique (duplication de contenu) , par exemple: .../sncfrev-2x2plaques-p-1197/ .../sncfrev-2x2-plaques-p-1197/ .../sncfrev2x2-plaques-p-1197/ .../sncfrev-2x2-plaques---p-1197/ .../sncfrev---2x2-plaques-p-1197/ .../sncfrev--------2x2-plaques-p-1197/ etc... etc... à l'infini !!! donc c'est pas bon , il faut trouver une solution, car si tu fait réapparaitre les .html à la fin, la réécriture refonctionne. (ce bug apparait si tu supprime les ".html" -------------------- OSC 2.1.3 et MS2 (PHP Version 5.2.17)
|
|
25 Apr 2018, 16:22
Message
#12
|
|
Ceinture marron OSC Groupe : Modérateurs Messages : 1543 Inscrit : 30-May 06 Lieu : Vichy (03) Membre no 10583 |
Alors j'ai ce "bug" sur mon site en live avec les .html
Une petite recherche rapide sur glouglou me montre que beaucoup de sites oscommerce sont comme le mien. Avec le .html moi j'ai seo 2.1 avec "bug", toi 2.2d sans "bug". Faut voir la différence de code qu'il y a entre les 2 versions. A priori je ne pourrais installer la 2.2d que ce soir sur un site test en local pour regarder cela de plus près. -------------------- Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse) Config 2 en local avec UwAmp : Osc Phoenix |
|
25 Apr 2018, 19:06
Message
#13
|
|
Ceinture marron OSC Groupe : Membres Messages : 1441 Inscrit : 24-April 03 Membre no 1102 |
En fait j'ai la même version que toi, la 2.1, c'est juste que j'ai essayé de reprendre les instructions d'install et j'en est profité mettre le code le plus récent.
En fait tu n'a pas grand chose à modifier coté front office: seo.class.php includes/application_top.php includes/functions/html_output.php et le .htaccess file Et je t'assure que le positionnement en souffre, les sites récents te passe devant, car OSC n'est plus vraiement à la pointe coté SEO. Sans parler des cpath etc... le référenceur me tape sur les doigts. -------------------- OSC 2.1.3 et MS2 (PHP Version 5.2.17)
|
|
Version bas débit | Nous sommes le : 29th March 2024 - 16:59 |
Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |