osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Ultimate SEO URLs (suppression .html), Comment supprimer les .html sans faire buguer Ultimate SEO ?
polo
posté 12 Apr 2018, 14:04
Message #1


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1438
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.. wacko.gif

Ce message a été modifié par polo - 12 Apr 2018, 14:06.


--------------------
OSC 2.1.3 et MS2 (PHP Version 5.2.17)
Go to the top of the page
 
polo
posté 12 Apr 2018, 14:24
Message #2


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1438
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('/((&#39))/', '-', 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)
Go to the top of the page
 
Bonbec
posté 12 Apr 2018, 16:40
Message #3


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1427
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 2.3.4 BS
Go to the top of the page
 
polo
posté 12 Apr 2018, 16:53
Message #4


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1438
Inscrit : 24-April 03
Membre no 1102



Bonjour et merci Bonbec,

çà fait plaisir de voir encore des oscommercien.. biggrin.gif

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. wacko.gif


--------------------
OSC 2.1.3 et MS2 (PHP Version 5.2.17)
Go to the top of the page
 
Bonbec
posté 12 Apr 2018, 17:49
Message #5


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1427
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 2.3.4 BS
Go to the top of the page
 
polo
posté 23 Apr 2018, 15:23
Message #6


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1438
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)
Go to the top of the page
 

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 25th April 2018 - 09:46
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)