〜「はてなブログ」から「独自ドメインWordPress」への引越し〜
【はてなブログ記事を301リダイレクトさせるには?】編です。
はてなブログからWordPressへ移転する際、無料のはてなアカウントでは、301リダイレクトやcanonicalの変更が行えません。ですが、JavaScriptを適切に設定すれば、Googleが移転したことを理解してくれるようです。
この記事では、「新サイトへのリダイレクト」と「canonicalの設定」の方法を紹介します。
なお、投稿記事の移転方法については、既にはてなブログから一括ダウンロードをし、パーマネントリンクの変更などを済ませておく必要があります。
詳しくは下記の記事で紹介していますので、参考にしてみてください。
サイト移転には、本来、Search consoleのヘルプでグーグルが書いているように、301リダイレクトを使った方法がオススメされています。
ですが、はてなブログ(無料版)では外部への301リダイレクトが設定できないため、JavaScriptを用いた移転方法を紹介します。この設定で、無事にGoogleインデックスを移転することに成功しました。
今回紹介するJavaScriptでは次のことを行います。
- 旧記事(はてなブログ記事内)での「移転しました」表示とリンク記載
- 数秒後に、新URLへのリダイレクト
- はてなブログで既に設定してしまっている canonical タグ※書き換え
設定方法 〜はてなブログ〜
はてなブログのデザイン設定から、記事ページに一括で JavaScript を貼ることができます。
設定場所
以下、はてなブログの設定画面です。
- JavaScript を貼りつける画面を表示させます
ダッシュボード => デザイン => レンチ・アイコン => 記事 => 記事上下のカスタマイズ => 記事上 - 「スマートフォン用ページの設定」として、チェックをいれます
ダッシュボード => デザイン => スマートフォンのアイコン => 記事 => 記事上下のカスタマイズ => PCと同じhtmlを表示する
コード
この枠内に、次のコードを貼り付けます。
<p><b>移転しました。</b></p>
<p><b>約5秒後に自動的にリダイレクトします。</b></p>
<script type="text/javascript" language="javascript">
<!--
// 新URLを作成
var domain = "https://〇〇〇〇.com/"; // 新ドメイン + ディレクトリに置換。末尾はスラッシュ。
var path = location.pathname.substr(6).replace(/\//g, "") + "-2"; // パス整形
var url = domain + path;
// htmlリンクの書き出し
document.write("<a href=\"" + url + "\">" + url + "</a></p>");
// リダイレクトまでの待ち時間
setTimeout("redirect()", 5000); // 5 sec
function redirect(){
location.href = url;
}
// canonical の書き換え
var link = document.getElementsByTagName("link")[0];
link.href = url;
-->
</script>
コードについて ※赤マーカ部分は変更可能
新URLを作成
“新URLを作成”部分で、移転先URLを準備します。
このコードでは、リダイレクト元と先のURLが下記の様に想定していますので、適宜環境に合わせて修正ください。
- はてなブログのURL => https://hatena-domain/entry/2020/10/06/012345
- 移転先URL =>https://NEW-DOMAIN/20201006012345-2
これは、はてなブログからエクスポート、Wordpressにインポートしたときの標準的なURLです。記事URLを独自URLに設定していない場合は、ママでOKです。
なお、過去にはてなダイヤリーから、はてなブログに記事をインポートしている場合は、パスが hatena-domain/entry/20201006/012345 となっていますが、この場合でもOKです。
コード中の新ドメインの部分(https://〇〇〇〇.com/)は移転先のURLに置き換えてください。
htmlリンクの書き出し
この部分では、作成したurlを使い、<a href=””>タグを挿入します。”+”が、文字列を結合する演算子です。htmlを変更したい場合はここを適宜変更してください。
なお冒頭の「移転しました。」の文字列も適宜変更してください。
リダイレクト
5秒後にリダイレクトをする設定。
リダイレクトさせない場合は、この部分は削除してください。
canonicalの書き換え
はてなブログでソースコードの表示をすると、head 部分で該当記事のURLへ canonical タグの設定がされています。
<link rel="canonical" href="https://NEW-DOMAIN/20201006012345-2"/>
href 要素を、新URLへと置き換えます。実際には、linkタグに対して置換しています。
canonical タグは、head 部分の頭に近いところへ記述することが推奨され、はてなブログも同様となっていることから、一番目のlinkタグを書き換えることで上手くいきます。
Search Consoleで、移転をGoogleに知らせる
ページにリダイレクトを設定したとしても、Googleがリダイレクトを知るのは次のクロールのときです。クロール頻度が低いページでは数ヶ月かかってしまいます。
ですので、Search Consoleでクロール要求を必ずしてください。
- Search Consoleから、旧サイトの「クロール => Fetch as Google」を選択
- リダイレクトを設定したページのURL(旧サイトURL)を入力。「取得」ボタンを押す
- ステータスが「リダイレクトされました」になっていることを確認
- 「インデックス登録をリクエスト」ボタンを押し完了
まとめ
この方法では、301リダイレクトのようにきっちり移転できるわけではありませんが、ある程度ページランクのある旧サイトの個別記事から、新ブログにリンクがされます。そのため、新サイトで記事を読むことができます。
コードをひとつ貼り付けるだけで出来てしまうので、ぜひトライしてみてください。
上手く行かない場合 〜個別に記事上部へ埋め込む〜
どうしても上手く行かない場合、個別に JavaScript を貼ることでも可能です。下記のコードをはてなブログ記事上部へ記載してみてください。
<p><b>移転しました。</b></p>
<p><b>約5秒後に自動的にリダイレクトします。</b></p>
<script type="text/javascript" language="javascript">
<!--
// 新URLを作成
var domain = "https://〇〇〇〇.com/"; // 新ドメイン(最後のスラッシュは不要です)
var path = location.pathname;
var url = domain + path;
// リンクhtmlの書き出し
document.write("<a href=\"" + url + "\">" + url + "</a></p>");
// リダイレクト
setTimeout("redirect()", 5000); // 5 sec
function redirect(){
location.href = url;
}
// canonical の書き換え
var link = document.getElementsByTagName("link")[0];
link.href = url;
-->
</script>
コメント