canonical(カノニカル)を適切に設定することでURLを正規化することができます。しかし、手動で設定するとなると手間がかかるので、PHPで動的に出力してみます。
https://hoge.com/?item=1 のようにクエリ付きのURLが正しい場合もありますが、リンク元によっては意図しないクエリが勝手に付いてしまうこともあるのでクエリを付ける・付けないは引数で指定します。
関数
function display_url( $query = false ) {
$url = "https://hoge.com" . $_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;
}
}
出力
クエリを付けるとき
<link rel="canonical" href="<?php display_url(true); ?>" />
クエリを付けないとき
<link rel="canonical" href="<?php display_url(); ?>" />