web-dev-qa-db-fra.com

force la balise http canonique sur les pages https

Actuellement, toutes les pages https ont leurs propres balises canoniques référençant https, ce qui est incorrect, elles devraient référencer les versions http.

par exemple:

https://www.example.com

a la balise canonique suivante:

<link rel='canonical' href='https://www.example.com' />

Comment pouvons-nous faire en sorte que les balises canoniques des pages https utilisent les URL http?

3
moobot

Vous pouvez le changer en utilisant le code suivant, ajoutez-le dans votre thème function.php ou dans le plugin.

remove_action ( 'wp_head' , 'rel_canonical' ) ;
add_action ( 'wp_head' , 'my_rel_canonical' ) ;

function my_rel_canonical () {
    ob_start () ;
    rel_canonical () ;
    $rel_content = ob_get_contents () ;
    ob_end_clean () ;
    echo str_replace ( "https:" , "http:" , $rel_content ) ;
}
5
Strik3r

Prévoyez-vous d'utiliser le canonique pour éviter les doublons de contenu dans Google? Je crois que c'est une mauvaise approche. Vous devez éliminer le contenu dupliqué en redirigeant les pages 301 vers le modèle approprié, SSL ou non-SSL, en fonction du contenu (extraction, connexion, administrateur). Et ne pas utiliser le canonique.

Edit: est-ce que je viens de répéter ce que vous avez dit plus tôt? https://webmasters.stackexchange.com/a/49852

1
tivnet

La manière dont https est implémenté est correcte. Si vous forcez http sur https, vos clients verront un avertissement indiquant que le site contient un contenu non sécurisé. Pourtant, si vous voulez le faire, il y a 2 façons:

  1. Utilisez mod_rewrite d'Apache pour réécrire toutes les URL HTTPS en HTTP comme indiqué ici .
  2. En utilisant un filtre personnalisé dans wordpress pour changer toutes les URL à la volée.

    function custom_force_http( $force_http, $post_id = 0, $url = '' ) {
      return str_replace ( "https:" , "http:" , $force_http) ;
    }    
    add_filter('force_http' , 'custom_force_http', 10, 3);
    
0
Srihari