EC-CUBE(2.11.4)重複ページの対応

EC CUBE

EC CUBE

重複ページの対応の記事でも書いたのですが、

EC-CUBEを使っていると

かなりの重複ページが出てきます。

http://~とhttps://~のあるなしとか

商品一覧と商品詳細ページです。

スポンサードリンク

重複ページをcanonicalを使って統一する

seo

seo

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

EC-CUBE公式完全ガイド[ver 2.12/2.11対応] ECサイト構築・カスタマイズ・運用のすべて

新品価格
¥3,218から
(2015/1/27 23:12時点)

スポンサードリンク

コメントを残す

サブコンテンツ

このページの先頭へ