webentwicklung-frage-antwort-db.com.de

http canonical tag auf https-seiten erzwingen

Gegenwärtig haben alle https-Seiten ihre eigenen kanonischen Tags, die auf https verweisen, was falsch ist. Sie sollten auf die http-Versionen verweisen.

z.B:

https://www.example.com

hat den folgenden kanonischen Tag:

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

Wie können wir dafür sorgen, dass die kanonischen Tags auf https-Seiten die http-URLs verwenden?

3
moobot

Sie können es mit folgendem Code ändern, in Ihrer theme function.php oder im Plugin hinzufügen.

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

Planen Sie die Verwendung von Canonical, um doppelte Inhalte in Google zu vermeiden? Ich glaube, es ist ein falscher Ansatz. Sie sollten den doppelten Inhalt beseitigen, indem Sie die Seiten 301 an das richtige Schema weiterleiten, entweder SSL oder Nicht-SSL, je nach Inhalt (Auschecken, Anmelden, Administrator). Und nicht mit dem Kanonischen.

Edit: habe ich gerade das wiederholt, was du vorher gesagt hast? https://webmasters.stackexchange.com/a/49852

1
tivnet

Die Implementierung von https ist korrekt. Wenn Sie http auf https erzwingen, wird Ihren Kunden eine Warnung angezeigt, dass die Site unsicheren Inhalt hat. Wenn Sie es dennoch tun möchten, gibt es zwei Möglichkeiten:

  1. Verwenden Sie mod_rewrite von Apache, um alle HTTPS-URLs nach HTTP umzuschreiben (siehe hier ).
  2. Verwenden eines benutzerdefinierten Filters in WordPress, um alle URLs im laufenden Betrieb zu ändern.

    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