スポンサードリンク

重複ページの対応の記事でも書いたのですが、
EC-CUBEを使っていると
かなりの重複ページが出てきます。
http://~とhttps://~のあるなしとか
商品一覧と商品詳細ページです。
スポンサードリンク
重複ページをcanonicalを使って統一する

EC-CUBEはtansactionidというものをパラメーターに使って
ページの遷移をチェックしています。
なのでURLがたくさん出てきてしまうんですよね。
おかげで、Google先生のウェブマスターツールでは
重複ページのエラーが出るわ出るわ・・・
一応、<tilte>タグと<description>タグで
対応していますが、
正規のやり方に挑戦してみました。
/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をうまく処理できなかったので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の後ろにページ番号を追加しました。
・今回この設定をするのに参考にしたサイト
ホームページのネタ帳
【SEO】rel=”canonical”で重複コンテンツを防ぐ
海外SEO情報ブログ
ページネーションにおけるrel=“canonical”タグの正しい使い方 at SMX West 2011
スポンサードリンク