2021/08/06:はてなブログから引っ越す強引なやり方

注意:この方法に限らずjavascriptを使った移転はpro会員でない限りスマホユーザーを切り捨てることになります(ユーザーの環境による)。誘導記事を一つは残しておきましょう。

はてなブログは301リダイレクトが使えません。つまりGoogle等の検索結果を引き継いで引っ越すことができません。なのでjavascriptを用いてリダイレクトしていたのですが、現在のGoogleはそれを引っ越したとは見なしてくれないようなのです(もしかしたら時間がかかるだけかも知れません)。

なので、404 Not FoundであることはGoogleに明示しつつ、ユーザーには「Entry is not found」であることは伏せつつリダイレクトは使わずに新しいURLへの誘導リンクを生成する必要がありそうです。

というわけでこんなのを考えてみました。これは全ての記事を削除する前提となります。記事を残してもいいですが、その場合はその記事は書き換えられません。

var newDomain = "https://aoilite.com"; //新URLベース
var path = location.pathname; // /Entry/以下
var url = newDomain + path; // 新URL

// 記事タイトルが入るヘッダ
var h1 = document.querySelector(".entry-content h1");
// これはよくわかってないけどあった方がいいみたい
var link = document.getElementsByTagName("link")[0];
    link.href = url;

// 記事タイトルが「Entry is not found」の場合だけ書き換える
var regex = /Entry is not found/
if(regex.test(h1.innerText)){
    // 記事タイトルを書き換える
    h1.innerText = "移転しました"
    // 兄弟要素の次の要素がpなのでそこを書き換える
    // 元の内容は「お探しの記事は見つかりませんでした。」
    var p = h1.nextElementSibling;
    p.innerHTML = "<a href='"+ url +"'>" + url +"</a>";
    // 0秒後にジャンプ (現在は未使用)
    // setTimeout("redirect()", 0);
}
// リダイレクト(現在は未使用)
function redirect(){
    window.location.replace(url)
}

雑ですが許して…。

デフォルトのこのような記事が、

こうなります。あとはWordpress側でプラグイン「Redirection」などを使って「/entry/~」を書き換えればOKです。WPはURLにスラッシュが使えず、はてなからインポートした場合はハイフンに変わります。

私の場合はスラッシュは1つか2つしか使っていなかったのでRedirectionは以下のようにしました。

スラッシュの数がもっと多い場合スマートに書くにはどうしたら良いんでしょうね。わかりません。

正直な所アクセス数は激減すると思います。新ドメインが育っていないところに、旧ドメインからの転送を止めるのですから、旧ドメインは404扱いになって掲載されなくなると思います。なのでアクセス数を稼ぎたいならこれは悪手だと思います。

でも私はそんなことよりはてなを切り捨てたかった。好きにやらせろ。

サイト運営

Posted by Kag