ottijp blog

はてなブログから引っ越しした時にmetaタグにnoindex/canonicalを設定する

はてなブログからGatsby.js + Netlifyで作る静的サイトへお引越ししました. はてなブログの元記事のmetaタグにnoindexとcanonicalを設定するために,以下のブログ記事を参考にしようとしたのですが, はてなブログには元々canonicalが存在していた(そのページそのもののURLが設定されていた)ので,追加ではなく書き換えするスクリプトを書きました.

また,新しいブログに自動転送するコードも追加しています.

スクリプト

こんな感じです. TARGET_URLを転送先のURLに設定します.

blog-move
**ブログを引っ越ししましたので,<span id="moveCount">5</span>秒後に移動します**
<script type="text/javascript">
if (document.getElementsByClassName('page-entry').length > 0) {
    const targetUrl = 'TARGET_URL';

    const head = document.getElementsByTagName('head')[0];
    const meta = document.createElement('meta');
    meta.setAttribute('name',"robots");
    meta.setAttribute('content','noindex');
    head.appendChild(meta);

    for (link of document.getElementsByTagName('link')) {
        if (link.getAttribute('rel') === 'canonical') {
            link.setAttribute('href', targetUrl);
        }
    }

    let count = 5;
    const countDown = function() {
        count -= 1;
        document.getElementById('moveCount').textContent = count;
        if (count === 0) {
            window.location.href = targetUrl;
        } else {
            setTimeout(countDown, 1000)
        }
    }
    countDown();
}
</script>

記事ごとのスクリプトの生成

記事ごとに貼り付けるスクリプトを以下のように生成しました.

$ find . -type d -depth 4 | sort | sed 's|^\./|https://blog\.ottijp\.com/|' | xargs -IXX bash -c 'cat blog-move | sed "s|TARGET_URL|XX|"'

Gatsbyのディレクトリ構成のcontent/blogで,上記コマンドを実行します.

content/blog
├── 2017
│   ├── 03
│   │   └── 02
│   │       └── hello-blog
│   │           └── index.md
│   ├── 10
│   │   ├── 21
│   │   │   └── ios-reject-conf2017-day2
│   │   │       └── index.md

生成されたコードをはてなブログに貼っていくのは1件1件手動でやりました・・・(自動化する方法があればよいんですが).


ottijp
都内でアプリケーションエンジニアをしています
© 2024, ottijp