複数リクエストパラメーターを持つURLの正規化・変更が簡単にできる関数

ワードプレスでサイトを構築する際、私はよく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的にもベストです。

<link rel="canonical" href="http://www.yahoo.co.jp/?tag=ヤフー&id=12321&category=ニュース">

実際に作成してみました

以下サンプルです。

categoryパラメーターを「ニュース」から「娯楽」に変更してリンクを作成しています。以下のようにすればリクエストパラメーターがいつもABC順に並ぶため、重複ページへのリンクを避けることができます。

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))));
}

娯楽
//echo により http://www.yahoo.co.jp/?category=娯楽&id=12321&tag=ヤフー と出力されます。

一度、remove_query_arg()としているところがミソで、これを怠るとソートができない状態で出力されてしまいます。

remove_query_arg()でリクエストパラメーターを消去し、その後ksort()したパラメーターをadd_query_arg()で追加しました。

コメント

お知らせ

羽織紐を手作りしてます!よろしければご覧ください!
  • 天然石 マグネット式羽織紐 #01 / 着物小物 / ブルーグリーン / 水晶
    天然石 マグネット式羽織紐 #01 / 着物小物 / ブルーグリーン / 水晶
  • 天然石 マグネット式羽織紐 #09 / 着物小物 / グレー / 高品質ルチルクォーツ
    天然石 マグネット式羽織紐 #09 / 着物小物 / グレー / 高品質ルチルクォーツ
  • 天然石 マグネット式羽織紐 #04 / 着物小物 / ネイビー
    天然石 マグネット式羽織紐 #04 / 着物小物 / ネイビー

お知らせ

羽織紐を手作りしてます!よろしければご覧ください!
  • 天然石 マグネット式羽織紐 #01 / 着物小物 / ブルーグリーン / 水晶
    天然石 マグネット式羽織紐 #01 / 着物小物 / ブルーグリーン / 水晶
  • 天然石 マグネット式羽織紐 #09 / 着物小物 / グレー / 高品質ルチルクォーツ
    天然石 マグネット式羽織紐 #09 / 着物小物 / グレー / 高品質ルチルクォーツ
  • 天然石 マグネット式羽織紐 #04 / 着物小物 / ネイビー
    天然石 マグネット式羽織紐 #04 / 着物小物 / ネイビー
タイトルとURLをコピーしました