バージョン選択

フォーラム

メニュー

オンライン状況

37 人のユーザが現在オンラインです。 (31 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 36
twicsysvki もっと...

サイト内検索

質問 > その他 > 静的URLの場合の「canonical」記述方法について

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
popo
投稿日時: 2013/1/2 9:01
対応状況: −−−
長老
登録日: 2008/10/1
居住地:
投稿: 189
静的URLの場合の「canonical」記述方法について
EC-CUBEバージョン
2.3.0
PHPバージョン
PHP 5.2.17
DBバージョン
PostgreSQL 7.4.19

明けましておめでとうございます。

お世話になります。
つい最近SEO対策として「canonical」と言うのを知りました。
現在はサイトを、動的URLをhtaccessによって、静的URLにしております。

早速導入しようといろいろと調べていて、下記のサイトを参考にしました。
URLの正規化(rel="canonical")を自動取得してみる

参考にして、「site_frame.tpl」のhead内に下記のように記述してみました。
<link rel="canonical" href="
<!--{php}-->
  echo 'http://';
  echo $_SERVER["SERVER_NAME"];
  echo $_SERVER["REQUEST_URI"];
  $url = $_SERVER["QUERY_STRING"];
      if ($url == null) {echo '';}
      else {echo '?';};
  echo $_SERVER["QUERY_STRING"];
<!--{/php}-->
" />


トップページにアクセスして、ソースをみると「<link rel="canonical" href="http://hogehoge.com/" />」となりますが、カテゴリを選択した場合が上手くできません。
カテゴリの静的URLを「http://hogehoge.com/products/list1.html」とすると、ソースを見ると「<link rel="canonical" href="http://hogehoge.com/products/list1.html?category_id=1" />」となってしまっています。
http://hogehoge.com/products/list1.html?category_id=1」にアクセスすると、「http://hogehoge.com/products/list1.html」と同じ内容が表示されます。

トップページ、カテゴリページ(list*.html)、商品詳細ページ(detail*.html)など、各ページに対応(静的URLとして)させるには、head内に記述した上記の記述内容をどのように修正したら良いのでしょうか?

そもそも「canonical」を記述しても、SEO的にはあまり意味が無ければどうしようもないのですが。。。

アドバイスをお願い致します。
dkazuto
投稿日時: 2013/1/17 9:43
対応状況: −−−
一人前
登録日: 2012/5/10
居住地:
投稿: 95
Re: 静的URLの場合の「canonical」記述方法について
popoさん

こんにちは。

まず、canonicalによって可能になることは、同じリソースを示すためのURL(クエリパラメータを含む)をどれかひとつに統一させて検索エンジンのクローラに認識させることです。

たとえばECCUBEのカテゴリページはデフォルトで以下のような形式になるかと思います。
http://xxxxxx.domain/products/list.php?category_id=1

次に同じページを並び替えをした場合の結果は
http://xxxxxx.domain/products/list.php?category_id=1&orderby=date

というように意味上は同じページなのに、URLが変わってしまうため、SEO的にはあまり効果的とはいえません。

これらを統一するのがcanonicalの機能といえます。

記載されている方法ですと、
> echo $_SERVER["QUERY_STRING"];
クエリストリングまでcanonicalに含まれてしまっておりますので、
並び替え結果や表示数変更後結果も別のURLを持つページとして記載してしまっていることになります。


以下に、カテゴリページをURL静的化した時のcanonicalの有効化の例を挙げてみます。

まず、ApacheのModRewrite機能でURLの静的化を行います。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule products/list([0-9]+).html$ products/list.php?category_id=$1 [L]

上記は
http://xxxxxx.domain/products/list1.html
というアドレスにアクセスされた際に
http://xxxxxx.domain/products/list.php?category_id=1
にアクセスされたことにするリライトルールです。

さらに、記載されているものを下記のように変更します。
<link rel="canonical" href="
<!--{php}-->
echo 'http://';
echo $_SERVER["SERVER_NAME"];
echo $_SERVER["REQUEST_URI"];
<!--{/php}-->
" />

こうしておけば、並び替え結果や表示数変更後結果に関してもhttp://xxxxxx.domain/products/list1.html
という同一のURLに検索エンジンのクローラを誘導することができ、SEO的に効果を発揮します。

以上ご参考となれば幸いです。
popo
投稿日時: 2013/1/23 4:40
対応状況: −−−
長老
登録日: 2008/10/1
居住地:
投稿: 189
Re: 静的URLの場合の「canonical」記述方法について
dkazutoさん、アドバイスありがとうございます。
質問からずっとアドバイスを頂けない日々が続いていたので、ずっとチェックするのを怠ってしまっていました。
お礼が遅くなり申し訳ありませんでした。

アドバイスして頂いたように、「site_frame.tpl」のhead内に記述したら、カテゴリページや商品ページにアクセスした時に、静的アドレスで表示されるようになりました。

ここで1つ質問があります。
〜/list.php?category_id=1
をhtaccessで静的化して下記のアドレスでもアクセスできるようにした場合。
〜/list1.html

この場合は、「〜list1.html」でも「〜list.php?category_id=1」でもアクセス可能で、両方のアドレスで同じページが表示されるようになります。

教えて頂いた記述方法では、「〜list.php?category_id=1」でアクセスした場合は、canonicalには「〜list.php?category_id=1」と表示されます。

「〜list.php?category_id=1」でアクセスした場合でも、canonicalには「〜list1.html」と表示されるようにするにはどうしたら良いでしょうか?

動的から静的にする以前の頃に、ユーザーさんが自分(ユーザーさん自身のサイト)のサイトにカテゴリや商品ページへの直リンを貼っている場合は、静的アドレスでは無く動的アドレスでリンクを貼っている場合があります。

そうすると、「〜list.php?category_id=1」でリンクを貼っている場合は、このリンクからアクセスすると
canonicalには「〜list.php?category_id=1」と表示されてしまいます。

検索エンジンのロボット(?)が、他サイトを経由して自分のサイトにアクセスしてきた場合、他サイトからのアクセスは「〜list.php?category_id=1」として認識してしまいます。
同じページなのに「〜list1.html」と「〜list.php?category_id=1」の2つの違うページ(ミラーページとして認識される?)として認識されてしまうかもしれません。

SEOはまだ深く勉強をしていないのですが、他サイトからの検索エンジンのロボットは気にする必要はないでしょうか?

アドバイスをお願い致します。
dkazuto
投稿日時: 2013/1/24 10:12
対応状況: −−−
一人前
登録日: 2012/5/10
居住地:
投稿: 95
Re: 静的URLの場合の「canonical」記述方法について
popoさん

「〜list1.html」でも「〜list.php?category_id=1」でも同じページが表示されてしまうのは仕方のないことです。

おそらく懸念されていることは、既に古いURLを知っているユーザや
被リンク元の別サイトにどうやってURLが更新されたことを告知するかということかと思います。

仰るとおり、URLの完全移行前に古いURL「〜list.php?category_id=1」でアクセスされることは十分考えられます。

そこで、古いURLでアクセスされたときにmod_rewriteでリダイレクト処理してしまうという方法が思いつくかと思います。

ただ、mod_rwriteというのはそもそも、静的なURLでアクセスされた際に内部で動的なURLに変換して処理を行なうという機能になりますので、
そのままmod_rewriteで古いURLにアクセスされたときにリダイレクト制御しようと思うと、

「動的URL」⇒リダイレクト(R301)⇒「静的化されたURL」⇒フォワード⇒「動的URL」・・・と無限ループしてしまいます。

そこで、ユーザーがアドレス欄に入力したものが静的URLなのか動的URLなのかを判別し、動的URLに直接アクセスされた場合はリダイレクトし、
静的URLに直接アクセスされた場合は、リダイレクトしないという処理分けが必要となります。

フォワードの部分はmod_rewriteで実現し、リダイレクトの部分はPHPで実現するというのが
現状一番簡単に出来る方法かと思われます。

以上、参考になればと思います。
popo
投稿日時: 2013/1/25 19:07
対応状況: −−−
長老
登録日: 2008/10/1
居住地:
投稿: 189
Re: 静的URLの場合の「canonical」記述方法について
アドバイスありがとうございます。

仕方がない事なんですね。

アクセスしてきたアドレスを取得できると言う事は、PHPの方で動的アドレスでのアクセスか、静的でのアクセスかを判別した上で、動的であればcanonicalには動的から静的に変換したしたアドレスを入力するような記述方法があれば良いですが、私にはこれを実現できるほどのPHPの知識が無いです。

と言うより、PHPで上記のような判別や変換を同時に行う事ができるか分かりませんが(-_-;

検索エンジンのロボットが、他のサイトのリンクから経由して訪れた場合にどのように認識されるか(動的と静的がミラーページと判断されないか)がちょっと心配な所です。

他のユーザーさんはどこまで心配はしていないんでしょうかね(^-^;
私だけかな(苦笑)
dkazuto
投稿日時: 2013/1/25 19:24
対応状況: −−−
一人前
登録日: 2012/5/10
居住地:
投稿: 95
Re: 静的URLの場合の「canonical」記述方法について
popoさん

他のサイトからあまりリンクされていない状態でしたら、
内部のリンクだけ置き換えてしまえばいいので、移行も簡単なのですが、
やはり検索エンジンのクローラにある程度インデクシングされてしまっているような中〜大規模サイトでは、
認知させる工数も含め、移行もそれなりにカスタマイズが必要になってきます。

>動的と静的がミラーページと判断されないか
この部分も同一ドメインであればほとんど影響はないかと思われますが、厳密にやるのであれば、
やはり動的URLにアクセスされたか静的URLにアクセスされたかでPHP側でcanonicalタグに出力するURLも変更してやる必要が出てきます。

大規模サイトを運用されているようなユーザさんですと気にされているとは思いますが、
最初からSEO対策を考えた上で運営を始めるもしくは、
規模が小さいうちから行うことが多いのかなと、個人的な感覚ですが思います。

popo
投稿日時: 2013/1/26 1:56
対応状況: −−−
長老
登録日: 2008/10/1
居住地:
投稿: 189
Re: 静的URLの場合の「canonical」記述方法について
dkazutoさん、アドバイスありがとうございます。

アイテム数が万を超えていないので、まだそれほど大きくないので、とりあえずは現状のdkazutoさんにアドバイス頂いた方法で運営をして行こうと思います。

時間があるとき、PHPでのURL変換出力の方法も調べてみようと思います。

的確なアドバイスありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,885名です
総投稿数は110,000件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1295
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.