Seo tools

Neo Inspiration

  • Search

    • About Me

      • inspi 改め
        jakk@webアーキテクト(自称)
        php,javascript,seoなど
        得意技は extract();



  • Categories

  • Ranking

  • Comments

  • Others


    • track feed   |
  • cakePHP でURLにSEOを効かせよう

    セグメントベースURLの場合どうしても
    天下の google には正しくキャッシュされなくなるパターンがあって、
    それはいわゆる「SEO的によくない」状態なので、
    それを直しましょうというお話です。

    といっても結局力ワザなんですが。

    どんなとき使うか

    パターンとしてはこーいう場合があります。

    大カテゴリのコントローラがあります。
    小カテゴリのコントローラがあります。
    その下にデータのコントローラがあります。

    というときに普通にやると

    ドメイン名/大カテゴリ
    ドメイン名/小カテゴリ
    ドメイン名/データ

    となってしまうわけです。
    (1個のコントローラで全部書いてしまえば問題ないですが 普通わけるとおもいます。)

    で google 的には
    ドメイン名/大カテゴリ名/小カテゴリ名/データ

    となるのが理想的なキャッシュです。

    なので 上記のURLでたたけるようにするやり方です。

    dispatcher.php

    とか cake本体には手をいれません。
    というかくじけましたorz

    なので力ワザします

    自前でURLディスパッチャを書いちゃいましょう。

    まずディスパッチャ用のコントローラを作ります。
    名前は適当で。

    それで、

    ドメイン名/大カテゴリ名/小カテゴリ名/データ

    このURLを叩いたときに $_SERVER に入ってくるデータを取得します。

    $_SERVER['REQUEST_URI']

    これでとっちゃいます。

    でこれをバラして組みなおす

    $requestUrl = explode(’小カテゴリ名’, $_SERVER['REQUEST_URI']);

    で最後 好きなコントローラにぶち込む

    $this->set(’result’,$this->requestAction($requestUrl[0],array(’return’)));

    こんなコントローラを書いて
    Viewは

    {$result}

    とだけ書いておく。

    最後に

    route.php でこの処理をしたいURLだけこのコントローラに飛ばせばOKです。

    まとめっぽく

    用は route.php(cakePHP のディスパッチャ) -> 自前ディスパッチャ -> アクション

    と冗長だけど1個かましてあげればいいですねというお話です。
    処理的にもコントローラ上で requestAction してるので気になるほど重くはなりません。


    Leave a Reply

    2009/01/07 08:42:05