canonical用のURLをPHPで表示する

canonical(カノニカル)を設定することでURLを正規化することができます。

設定する必要性は↓のページを見ると分かりやすいです。

link rel=”canonical”によるURL正規化タグ——SEOにとって非常に重要な進歩(前編) | Web担当者Forum 

 

しかし、手動で設定するとなると手間がかかるので、PHPで動的に出力してみます。

以下の関数を作ります。

//URLを表示
function display_url( $query = false ) {
    $url = ( empty( $_SERVER["HTTPS"] ) ? "http://" : "https://" ) . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
    if ( !$query ) {
        //クエリを削除したURL
        $parse_url = parse_url( $url );
        echo $parse_url['scheme'].'://'.$parse_url['host'].$parse_url['path'];
    }else {
        //クエリ付きのURL
        echo $url;
    }
}

ページによっては、http://hoge.com/?item=4 のようにクエリ付きのURLが正しい時もありますが、

SNSからのリンクによって http://hoge.com/?sns=4 のように意図しないURLの時もありますので、引数によって使い分けます。

 

■クエリを削除したURLの時

<link rel="canonical" href="<?php display_url(); ?>" />

 

■クエリ付きの時

<link rel="canonical" href="<?php display_url(true); ?>" />

 

この記事を書いた人:

ナカシマ

北区赤羽在住のWEBデザイナー兼エンジニア。インターネット、WordPress、本・漫画、音楽が大好き。妻と猫と暮らすアップル信者。

BLOG: 着ぐるみ追い剥ぎペンギン