整理と雑記

たまにリライト

【はてなブログ】投稿済みの記事をカスタムURLに変更する場合の対処

はてなブログで投稿済みの記事をカスタムURLに変更したくなった。

しかし、投稿後の記事のURLを変更すると変更前のURLは無効になってしまう。

f:id:satoec5:20170810005148p:plain

そこでGoogleの検索結果の反映までリダイレクトしてくれるスクリプトを作成することにした。

参考にしたサイトは以下の2つになる。

はてなブログで記事が見つからない404 Not Foundをカスタマイズした - にちプチ 【Nichi-Petit】

はてなブログの一部の記事を移転するときに気をつけること | ぺーぺーSEのテックブログ

上記サイトを参考に作成したコードは以下になる。

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.2.3.min.js"></script>
<script type="text/javascript" language="javascript">
// <![CDATA[
  var href = window.location.href;
  var re = new RegExp(".*entry/2017/05/05/085345");
  if (re.test(href)) {
    $(document).ready(function() {
      if ($('#main-inner').children().hasClass("no-entry")) {
        var content = "<p>本記事は移転しました。</p><p>約3秒後にリダイレクトします。</p><p>リダイレクトしない場合は<a href='http://seiritozakki.hatenablog.com/entry/machiavellism-shinakoi'>ここ</a>をクリックしてください。</p>" ;
        $('.entry-footer').addClass('sorry_content');
        $('.entry-footer').html(content);
      }
    });
    var url = "http://seiritozakki.hatenablog.com/entry/machiavellism-shinakoi";
    var link = document.getElementsByTagName("link")[0];
    link.href = url;

    setTimeout("redirect()", 3000);
    function redirect(){
    location.href = url;
    }
  }
// ]]>
</script>

これをURL部分を変更してデザイン→カスタマイズ→ヘッダーに貼り付ける。コピペで良い。

サンプルの場合は〜/entry/2017/05/05/085345にアクセスした際に記事が移転した旨を伝えるメッセージを出力し、3秒後に〜/entry/machiavellism-shinakoiへとリダイレクトする。

リダイレクトまでの時間を変えたい場合はsetTimeout("redirect()", 3000);の数値を変更すると良い。

画面のイメージは以下である。

f:id:satoec5:20170810004759p:plain

検索の反映まで取り敢えずリダイレクトでお茶を濁したい場合には有用じゃないかと思う。