ワードプレスでサイトを構築する際、私はよくGETを利用して検索性をもたせます。
ただ、困るのがURLの正規化です。パラメーターが複数になるとその順番がバラバラだと別々のURLになってしまうからです。
ユーザビリティーには影響しないものの、SEOの観点からは、一コンテンツ一URLとなる方が好ましいです。
重複ページの増加で検索順位に影響も
例えば、
「http://www.yahoo.co.jp/?tag=ヤフー&id=12321&category=ニュース」
「http://www.yahoo.co.jp/?id=12321&category=ニュース&tag=ヤフー」
のようにリクエストパラメーターの順序が違うだけで、重複ページと認識されてしまい検索順位が低下することがあります。
実際にサイトを運営していく中で、URLの正規化をほどこした途端、検索順位が大幅に上昇し始めたことがあります。(それも何度も)
カノニカルよりはURLの正規化で対処したいところ
次のようにカノニカルタグで対処する方法もありますが、リンク先のURLを正規化できればSEO的にもベストです。
1 |
<link rel="canonical" href="http://www.yahoo.co.jp/?tag=ヤフー&id=12321&category=ニュース"> |
実際に作成してみました
以下サンプルです。
categoryパラメーターを「ニュース」から「娯楽」に変更してリンクを作成しています。以下のようにすればリクエストパラメーターがいつもABC順に並ぶため、重複ページへのリンクを避けることができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
parse_str($_SERVER['QUERY_STRING'],$my_param); //現在ページのリクエストパラメータ取得 //例:http://www.yahoo.co.jp/?tag=ヤフー&id=12321&category=ニュース function my_param($my_param,$key,$value){ //$my_paramにparse_str($_SERVER['QUERY_STRING'],$my_param);をセットし、$key=>$valueに変更します。またkey値によってソートしたURLを返します。 $my_param[$key]=$value; ksort($my_param); return esc_url(add_query_arg($my_param,remove_query_arg(array_keys($my_param)))); } <a href="<?php echo my_param($my_param,'category','娯楽');?>">娯楽</a> //echo により http://www.yahoo.co.jp/?category=娯楽&id=12321&tag=ヤフー と出力されます。 |
一度、remove_query_arg()としているところがミソで、これを怠るとソートができない状態で出力されてしまいます。
remove_query_arg()でリクエストパラメーターを消去し、その後ksort()したパラメーターをadd_query_arg()で追加しました。
コメント