質問 > その他 > 静的URLの場合の「canonical」記述方法について |
その他
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
popo |
投稿日時: 2013/1/26 1:56
対応状況: −−−
|
長老 登録日: 2008/10/1 居住地: 投稿: 189 |
Re: 静的URLの場合の「canonical」記述方法について dkazutoさん、アドバイスありがとうございます。
アイテム数が万を超えていないので、まだそれほど大きくないので、とりあえずは現状のdkazutoさんにアドバイス頂いた方法で運営をして行こうと思います。 時間があるとき、PHPでのURL変換出力の方法も調べてみようと思います。 的確なアドバイスありがとうございました。 |
dkazuto |
投稿日時: 2013/1/25 19:24
対応状況: −−−
|
一人前 登録日: 2012/5/10 居住地: 投稿: 95 |
Re: 静的URLの場合の「canonical」記述方法について popoさん
他のサイトからあまりリンクされていない状態でしたら、 内部のリンクだけ置き換えてしまえばいいので、移行も簡単なのですが、 やはり検索エンジンのクローラにある程度インデクシングされてしまっているような中〜大規模サイトでは、 認知させる工数も含め、移行もそれなりにカスタマイズが必要になってきます。 >動的と静的がミラーページと判断されないか この部分も同一ドメインであればほとんど影響はないかと思われますが、厳密にやるのであれば、 やはり動的URLにアクセスされたか静的URLにアクセスされたかでPHP側でcanonicalタグに出力するURLも変更してやる必要が出てきます。 大規模サイトを運用されているようなユーザさんですと気にされているとは思いますが、 最初からSEO対策を考えた上で運営を始めるもしくは、 規模が小さいうちから行うことが多いのかなと、個人的な感覚ですが思います。 |
popo |
投稿日時: 2013/1/25 19:07
対応状況: −−−
|
長老 登録日: 2008/10/1 居住地: 投稿: 189 |
Re: 静的URLの場合の「canonical」記述方法について アドバイスありがとうございます。
仕方がない事なんですね。 アクセスしてきたアドレスを取得できると言う事は、PHPの方で動的アドレスでのアクセスか、静的でのアクセスかを判別した上で、動的であればcanonicalには動的から静的に変換したしたアドレスを入力するような記述方法があれば良いですが、私にはこれを実現できるほどのPHPの知識が無いです。 と言うより、PHPで上記のような判別や変換を同時に行う事ができるか分かりませんが(-_-; 検索エンジンのロボットが、他のサイトのリンクから経由して訪れた場合にどのように認識されるか(動的と静的がミラーページと判断されないか)がちょっと心配な所です。 他のユーザーさんはどこまで心配はしていないんでしょうかね(^-^; 私だけかな(苦笑) |
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/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/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/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="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的にはあまり意味が無ければどうしようもないのですが。。。 アドバイスをお願い致します。 |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |