2014年7月25日金曜日

アサブロからの移行方法 その2:アサブロから自動的に転送するには

新しいブログを始めても、前のブログに訪れる人がいるため、ユーザーを誘導する必要があります。よくつかわれるのは、リダイレクトです。

リダイレクトする方法に関しては、Wikiを読んでいただくとして、google driveで運用する上でのテクニックをお知らせします。

話が前後しますが、私がJavascriptを使ってリダイレクトさせている理由の一つがここにありますので、先に説明します。

1.google driveの制限

まず、google driveは、Webサーバーではないので、本来であれば、すべてブラウザ側が判断する話で、制限はないはずなのですが、metaタグによるリダイレクトが禁止されているようです。

アーカイブ上のdarkmark blogをクリックすると、index.htmlが呼ばれるようになっています。
そして、そこから、このbloggerへリダイレクトさせるように、metaタグを書いていたのですが、index.htmlをアップして数時間後、このindex.htmlが見れなくなるのです。
(google driveに黄色い△アイコンが付き、Google ドライブ利用規約違反の恐れがあるので、審査が必要な旨が書かれてしまいます)

おそらくですが、googleのサイトと思ってアクセスした人がリダイレクトされてしまうのを避けるためだと思われます。(ただ、なぜかJavascriptはOKなんですよね。w)

2.旧 ブログからジャンプしてきたことが前提なので

旧ブログからの誘導で、すべてのURLをトップページに誘導してしまうと、旧ブログの記事を自分で探す必要が出てきます。検索エンジン等から来た人には不便です。(直リンクがほとんどなので)
なので、URLを自動で変換して、google driveのURLにしてリダイレクトしたい。
これにはJavascriptが便利です。

というわけで、現在はJavascriptでリダイレクトしています。

リダイレクトの方法:

アサブロのカスタマイズで、headerやfooterにjavascriptが仕込めるので、
3/4 移転先へ自動移動(転送/リダイレクト)させる方法 ... - All About
を参考に、regexp.test と組み合わせて、footer下記のようなスクリプトを仕込みました。

<script type="text/javascript"><!--
   var regexp = /\/$/;
   if(regexp.test(location.pathname)){
     location.href = "https://googledriveのURL" + location.pathname + location.search + location.hash;
   }
   else
   {
    location.href = "https://googledriveのURL"   + location.pathname + ".html";
}
// --></script>

footerに仕込んだのは、ジャンプしていることを明示的に見せるためです。
location.pathnameをチェックしているのは、元のURLはファイルじゃないのですが、Website Explorerでバックアップしたデータには、ファイル化する際、".html"がついているため、そのままリダイレクトすると、ファイルが見つからない。と言われるため、URLが"/"で終わらない場合、".html"をURLに追加するようにしています。

これで検索エンジンから旧ブログに直接来られても大丈夫な状態となります。

0 件のコメント:

コメントを投稿