IMUZA.com

Xserver<<WordPress(ConoHa)<<はてなブログ

ホーム / javascript / はてなブログ間の記事移動はJavascriptとcanonicalでリダイレクト

はてなブログ間の記事移動はJavascriptとcanonicalでリダイレクト

2019/04/9 javascript, WebTips, はてなブログ

現在、はてなブログで4つのブログを運用しているのですが、そのうちのひとつを別のブログに統合しようと思います。

で、どうやってリダイレクトするかですが、もちろん .htaccess は使えませんので Javascript を使うしかありません。

今回の条件

はてなブログ間で記事を移動する場合、カテゴリーもそのまま移動するのであれば、移動するブログの 詳細設定 -> headに要素を追加 に

<script>
location.href = http(s)://移動先ブログのドメイン + location.pathname;
</script>

と入れておけばリダイレクトされます。

ただ、今回の場合、

  • 移動するブログには複数のカテゴリーがあるが、移動先ではひとつのカテゴリーにまとめる
  • トップページ、カテゴリーページ、アーカイブページは、移動先のカテゴリーページにリダイレクトする
  • 記事ページは、移動先記事ページにリダイレクトする

という条件で移動しますので、若干手を加える必要があります。

また、 rel="canonical" ですが、こうした場合に Javascript で差し替えることに効果があるかどうかわかりませんが、やっておいて損はありませんのでやっておきましょう。

エクスポートした記事ファイルの整形

  1. まず、移動するブログの 設定 -> 詳細設定 -> エクスポート から記事ファイルをダウンロードします。
  2. ファイルをエディタで開き、カテゴリーを削除、修正など、ひとつのカテゴリーに変更します。
  3. 移動先のブログで記事ファイルをインポートします。

Javascript でのリダイレクト

上記の条件下でリダイレクトする場合の Javascript です。

即時リダイレクト

<script>
if(location.href.indexOf('entry') !== -1){
    var url =  http(s)://移動先ブログのドメイン + location.pathname;
}else{
    var url =  http(s)://移動先ブログのドメイン + '/archive/category/移動先の新しいカテゴリー';
}
document.getElementsByTagName('link')[0].href = url;
location.href = url;
</script>

これは 詳細設定 -> headに要素を追加 に入れても、カスタマイズ -> ヘッダ -> タイトル下 に入れてもいけます。

メッセージ表示後にリダイレクト

<script>
if(location.href.indexOf('entry') !== -1){
    var url =  http(s)://移動先ブログのドメイン + location.pathname;
}else{
    var url =  http(s)://移動先ブログのドメイン + '/archive/category/移動先の新しいカテゴリー';
}
document.getElementsByTagName('link')[0].href = url;
var elem = document.createElement('div');
elem.innerHTML = '当ブログは「' + 移動先のブログ名 + '」に統合しました。<br />5秒後に新しいブログに移動します。';
elem.setAttribute('style', 'width:100vw;height:100vh;padding-top:100px;text-align:center;background:#fff;font-size:20px;font-weight:bold;position:fixed;z-index:9999;');
var parent = document.getElementById('container');
parent.insertBefore(elem, parent.firstChild);


setTimeout(function(){
location.href = url;
}, 5000);
</script>

こちらは カスタマイズ -> ヘッダ -> タイトル下 に入れないと id=container 要素を取得できません。

適用したサイト

(2019.4.10)カテゴリーを維持したまま移動しようと検討中につき、まだリダイレクトしません。

mankan.hatenablog.jp

はてなブログ用 Javascriptモジュール imzModules ver.2.0
Joomla! 3.9.5 セキュリティ & バグフィックスがリリースされています
Twitter
Facebook
ブックマーク
LINEで送る

最初のサイドバー

最新記事

2023/05/25

WordPress:リビジョン削除、回数制限

2023/05/10

WordPress:裏技的サイトリニューアル

2023/04/28

XserverへのSSH接続がエラーになってしまった

2023/04/16

正規表現の最短一致でミスる

2023/04/4

WordPress:公開中サイトをサブディレクトリでリニューアルし公開する

最新記事を一覧で見る

よく読まれている記事

よく読まれている記事を一覧で見る

カテゴリー

  • はてなブログ215
  • WebTips109
  • javascript98
  • Joomla!88
  • Wordpress70
  • Windows68
  • CSS63
  • Joomla!更新53
  • Linux49
  • はてなテーマ45
  • Google34
  • Plamo33
  • はてなプラグイン25
  • php23
  • Node.js18
  • Ubuntu16
  • SASS16
  • laravel415
  • Chrome11
  • cms-style10
  • iPhone9
  • Git入門6
  • ConoHa WING6
  • genesis6
  • Python5
  • Android5
  • PC全般4
  • Facebook4
  • スマートフォン4
  • Xserver3
  • Firefox3
  • 静的サイトジェネレーター3
  • SSD3
  • Docker3
  • Blankslate3
  • Twitter2
  • Mactype2
  • GitHub2
  • youtube1
  • はてなブクマ1
  • rails入門1
  • 映画1

Footer

My Web Sites

  • @半径とことこ60分
  • そんなには褒めないよ。映画評
  • IMUZA.com
  • GitHub

Related Sites

  • WordPress公式
  • WordPress関数リファレンス
  • PHPマニュアル

Contact Us

  • お問い合わせフォーム
  • Twitter
  • Facebook
  • Feedly

Copyright © 2023 · IMUZA.com