スポンサードリンク

重複ページの対応の記事でも書いたのですが、
EC-CUBEを使っていると
かなりの重複ページが出てきます。
【http://~】と【https://~】のあるなしとか
商品一覧と商品詳細ページで
URLが同じだと一緒のページと認識されて
重複判定される事があるんですよね。
Googleさん的にはあまりよろしくない事なので
重複ページの対応をしました。
スポンサードリンク
重複ページをcanonicalを使って統一する

EC-CUBEは【tansactionid】というものをパラメーターがありまして、
この仕様でページの遷移をチェックしています。
なのでURLがたくさん出てきてしまうんですよね。
おかげで、Google先生のウェブマスターツールでは
重複ページのエラーが出るわ出るわ・・・
一応、tilteタグとdescription&gタグで
対応していますが、
正規のやり方に挑戦してみました。
重複ページの対応方法
【/data/Smarty/templates/default/site_frame.tpl】に以下を追加
<!--{php}--> if (preg_match("/contact/",$_SERVER["REQUEST_URI"])){ $this->assign('var','1'); }elseif(preg_match("/cart/",$_SERVER["REQUEST_URI"])){ $this->assign('var','1'); }elseif(preg_match("/mypage/",$_SERVER["REQUEST_URI"])){ $this->assign('var','1'); }elseif(preg_match("/shopping/",$_SERVER["REQUEST_URI"])){ $this->assign('var','1'); }elseif(preg_match("/products/",$_SERVER["REQUEST_URI"])){ $this->assign('var','2'); }else{ $this->assign('var','0'); } <!--{/php}--> <!--{* $var = 0 は後の rel="canonical" で必要 *}--> <!--{if ($var == 1)}--> <meta name="robots" content="noindex,follow" /> <!--{/if}--> <!--{* 重複ページの設定 *}--> <!--{if $var == 2 && $tpl_title == "商品一覧ページ"}--><!--商品一覧ページの時--> <link rel="canonical" href="<!--{$smarty.const.HTTP_URL}-->products/list.php?category_id=$c_id" /> <!--{elseif $var == 2 && $tpl_title == "商品詳細ページ"}--><!--商品詳細ページの時--> <link rel="canonical" href="<!--{$smarty.const.HTTP_URL}-->products/detail.php?product_id=$p_id" /> <!--{elseif $var == 0}--><!--{* noindex条件分岐のときに値を決める *}--> <link rel="canonical" href="http://○○○○○○.com<!--{$smarty.server.PHP_SELF}-->" /> <!--{/if}-->
URLを元のPHP側でうまく処理できなかったのでSmartyでPHPを使います。
内容は、正規表現を使ってhttpsアクセスしたいものを取得します。(変数varが1)
こちらの仕様ではhttpsでアクセスするものは基本的にインデックスされなくていいので
noindexを記述しています。
followを付けておくとインデックスはしないけどリンクジュースは渡すので
こちらも記述しておきました。
変数varが1か2のものにはrel=”canonical”を付ける。
という形で対応してみました。
スポンサードリンク
商品カテゴリーIDと商品IDの取得方法
商品カテゴリーIDと商品IDは
phpファイル側で取得できます。
【/data/class/pages/products/LC_Page_Products_List.php】のactionメソッドの最後に
$this->c_id = $_GET['category_id'];
同じように
【/data/class/pages/products/LC_Page_Products_Detail.php】のactionメソッドの最後に
$this->c_id = $_GET['product_id'];
とGETでパラメータを取得します。
とりあえず、これで様子を見てみます。
【追記】ページ番号の取得方法
商品リストのページはページ番号を追加で載せる事にしました。
【/data/class/pages/products/LC_Page_Products_List.php】のactionメソッドの最後に
$this->page = $_GET['pageno'];
上記のようにページ番号をURLから取得します。
そして、/data/Smarty/templates/default/site_frame.tplの商品一覧の
canonical設定の部分に
・・・ <link rel="canonical" href="<!--{$smarty.const.HTTP_URL}-->products/list.php?category_id=<!--{$c_id}-->&pageno=<!--{$page}-->" /> ・・・
上記のようカテゴリーIDの後ろにページ番号を追加しました。
重複ページの対応はこれでいいかと思います。
あとはGoogleさんがどのようにインデックスしてくれるか待ってみましょう。
スポンサードリンク
今回この設定をするのに参考にしたサイト
ホームページのネタ帳
【SEO】rel=”canonical”で重複コンテンツを防ぐ
海外SEO情報ブログ
ページネーションにおけるrel=“canonical”タグの正しい使い方 at SMX West 2011
スポンサードリンク