サポート » その他 » canonicalタグの付与について

  • 解決済 daybreakdeath

    (@daybreakdeath)


    canonicalタグについて質問させてください。

    グーグルサーチコンソールにて「重複しています。ユーザーにより、正規ページとして選択されていません」という除外が600件以上あります。

    対象のひとつですが、以下のように「page=数字」が大量にあります。
    https://www.daybreakdeath.net/page/2/?page=1525704247

    実際の正規URLは以下になるため、canonicalタグをつけて正規化をしようとしています。
    https://www.daybreakdeath.net/page/2/

    しかし、「header.php」にコードを追加したのですが、page2,page3などをみても
    「<link rel=”canonical” href=”https://www.daybreakdeath.net” />」となっており、トップページが指定されています。
    トップページの各ページごとの正規URLでcanonicalタグをつけるにはどのようにすればよいのでしょうか?

    適用しているテーマの関係上SEO系のプラグインは一切使えません。
    なお記述したコードは以下になります。

    <?php
    global $page, $paged, $wp_query;
    //トップページ
    if(is_home()||is_front_page()){
    	$canonical_url = home_url();
    //カテゴリーページ
    }else if (is_category()){
    	$canonical_url = get_category_link(get_query_var('cat'));
    //固定ページ&投稿
    } else if (is_page()||is_single()) {
    	$canonical_url = get_permalink();
    //検索結果ページ
    } else if (is_search()){
    	$encode_s_word = urlencode(get_search_query());
    	$canonical_url = home_url().'?s='.$encode_s_word;
    //タグアーカイブ
    } else if(is_tag()){
    	$encode_tag = urlencode(single_tag_title( '', false ));
    	$canonical_url = home_url().'/archives/tag/'.$encode_tag;
    //その他のページ
    } else {
    	$canonical_url = null;
    }
    if ($canonical_url == !null) { ?><link rel="canonical" href="<?php echo $canonical_url; ?>" />
    <?php }
    //表示中のページが分割ページの場合は前後のページへのリンクを出力
    if (!$max_page)
    	$max_page = $wp_query->max_num_pages;
    if (!$paged)
    	$paged = 1;
    	$nextpage = intval($paged) + 1;
    if (!is_singular() && ($nextpage <= $max_page)) { ?>
    <link rel="next" href="<?php echo next_posts( $max_page, false ); ?>" />
    <?php }
    if(!is_singular() && $paged > 1){ ?>
    <link rel="prev" href="<?php echo previous_posts( false ); ?>" />
    <?php } ?>

    よろしくお願いいたします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • こんにちは

    下記のようにするのはどうでしょうか?

    //トップページ
    if(is_home()||is_front_page()){
    	$canonical_url = home_url();

    //トップページ
    if ( is_home() || is_front_page() ) {
    	$url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    	$canonical_url = user_trailingslashit( preg_replace( '/\?.+$/', '', $url ) );

    ishitakaさま

    いただいたコードに書き換えて試してみたところ、canonicalタグを確認したら、正規URLになっていることを確認できました。
    ありがとうございます。
    これでしばらくサーチコンソールがどのようになるか様子見してみようと思います。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • このトピックに返信するにはログインが必要です。