基本へ帰ろう このページをアンテナに追加 RSSフィード

2009-02-17

ライブドアブログで特定のページをリダイレクトさせることについて考えてみる

what

タイトルのような要望があったので、やってみる。



実験ブログ

http://blog.livedoor.jp/japanrock_test/ を使う。



仕様

http://blog.livedoor.jp/japanrock_test/archives/50886795.html

こちらを

http://twitter.com/japanrock/statuses/918602936

へ 301 リダイレクトさせる。



.htaccessによる 301 リダイレクト

有料プランで Pro 以上を契約している場合、FTP.htaccess ファイルがアップロードできる・・・とおもいきやできない・・・orz 禁止されている。

FTP.htaccess ファイルをアップロードしようとすると、「553 Prohibted file name: /.htaccess」となる。

ということで、 .htaccess ファイルでのリダイレクトはあきらめる・・・。でも、ライブドアのヘルプには .htaccessが使えないなんて書いてないなぁ・・・。



Javascript、metaタグによる 301リダイレクト

Javascriptでのリダイレクトで注意しなければいけないのは、クローキング

Why is my page missing from Google Search? - Search Console Help

Cloaking - Search Console Help

URLs not followed errors - Search Console Help

Meta tags that Google understands - Search Console Help

上記のページのポイントは、

であるので、

すればよいということになる。

以下のようなコードを head 内に書くことになるだろうか。

<!-- リダイレクト設定ここから -->
<script type="text/javascript">
<!--
if (location.href.search(/japanrock_test\/archives\/50886795\.html/i) != -1) {
location.replace('http://twitter.com/japanrock/statuses/918602936');
}
// -->
</script>
<noscript>
<meta http-equiv="Refresh" content="0; URL=http://twitter.com/japanrock/statuses/918602936;" />
</noscript>
<!-- リダイレクト設定ここまで -->

上記のスクリプトを、「個別記事ページ」のテンプレートに記述すれば、同じ個別記事ページでも、

http://blog.livedoor.jp/japanrock_test/archives/50886795.html では、期待どおりリダイレクトし、

http://blog.livedoor.jp/japanrock_test/archives/51583596.html ではリダイレクトしないという

期待どおりの結果が得られる。

がしかし、検索エンジンは、両方 meta Refresh タグをみてリダイレクトするはずだ・・・orz

うーむ・・・。ブログシステムでテンプレートJavascriptを埋め込んでリダイレクトする方法だと、クローキングが起きる・・・。



meta Refresh は301か302か

リダイレクト元のデータは 200でサーバ側から受け取るわけだが、その後 meta タグによってリダイレクトした場合、検索エンジンはどのような認識をするのだろう。

Yahoo!

http://help.yahoo.com/l/us/yahoo/search/webcrawler/slurp-11.html

Yahoo!リダイレクトに遅れがある場合は、302 そうでない場合は、 301 と認識するようです。

Google

Meta tags that Google understands - Search Console Helpにはとくに記述はない。


Google グループ

no title

上記のURLを見ると、 一応 301 リダイレクトとして処理してくれているような感じだが・・・。




まとめ

ライブドアブログでAというパーマリンクページでリダイレクトをさせたい場合、Bというパーマリンクページなどでクローキングの問題が起きてしまうので、あまり好ましくないとは思う・・・。

うーむ、もっとスッキリリダイレクトさせる方法はないかなぁ・・・ってそもそもブログで特定のページをリダイレクトさせるという要望がそもそも少ないから、この問題は発展しなさそうだなぁ・・・。


クローキング被害の少なさを考えるなら、

<noscript>
<meta http-equiv="Refresh" content="0; URL=http://twitter.com/japanrock/statuses/918602936;" />
</noscript>

の記述はない方がいいと思う。なぜなら、検索エンジンJavascriptリダイレクトは認識しないので、以下の表のようにメタタグがない方がクローキングする範囲は狭いためだ。

http://blog.livedoor.jp/japanrock_test/archives/50886795.htmlhttp://blog.livedoor.jp/japanrock_test/archives/51583596.htmlその他リダイレクトスクリプトを含むページ(月別アーカイブなど)
メタタグありクローキングなしクローキングありクローキングあり
メタタグなしクローキングありクローキングなしクローキングなし