web-dev-qa-db-ja.com

httpsページにhttpの正規タグを強制する

現在のところ、すべてのhttpsページにはhttpsを参照する独自の標準タグがありますが、これは正しくありません。httpsバージョンを参照しているはずです。

例えば:

https://www.example.com

以下の標準タグがあります。

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

Httpsページの標準タグにhttp URLを使用させるにはどうすればよいですか。

3
moobot

次のコードを使って変更したり、テーマのfunction.phpやプラグインに追加することができます。

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

Googleでコンテンツが重複しないようにするために、正規表現を使用しますか?それは間違ったやり方だと思います。コンテンツ(チェックアウト、ログイン、管理者)に応じて、301ページをSSLまたは非SSLの適切なスキームにリダイレクトして、重複するコンテンツを排除する必要があります。そして規範を使わない。

編集: あなたが以前に言ったことを繰り返しましたか? https://webmasters.stackexchange.com/a/49852

1
tivnet

Httpsの実装方法は正しいです。 httpsにhttpを強制すると、サイトに安全でないコンテンツがあることを示す警告がクライアントに表示されます。それでもやりたいのであれば、2つの方法があります。

  1. Apacheのmod_rewriteを使用して、 here のようにすべてのHTTPS URLをHTTPに書き換えます。
  2. その場ですべてのURLを変更するためにwordpressのカスタムフィルタを使用する。

    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