同じURLのまま「はてなブログ」から「WordPress」に移行する

ブログ運営

こんにちは。

当サイト「039日記」は、2020/12/26 に「はてなブログ」から「WordPress」に移行しました。

その際、すべての記事のURLを変えずに移行したので、その手順を記載しておきます。

前置き:WordPressでブログ開設~記事インポートまで

ここは本記事の趣旨とはずれるので、大まかな流れだけ書きます。

まず、WordPressで新しくブログを開設します。

開設時の独自ドメインははてなブログのドメインと同じものを使います。
(はてなブログ無料版は独自ドメインが使えないので、無料版の場合は同じURLでは移行できません)

WordPressの場合はサーバを自分で借りる必要があるので、Xserver等でサーバを借りてブログ開設をします。

その後、はてなブログで記事のエクスポートを行い、エクスポートしたファイルをダウンロードします。

そのファイルをWordPressでインポートすると、はてなブログで書いた記事がすべてWordPressに移行されます。

ここまでの手順は調べればたくさん記事が出てくるので、それらを参考にすれば良いと思います。

ここからが本題です。

同じURLに設定する手順

ここまでの手順を踏んでも、各記事のURLは以前のURLと異なったままです。

ここからURLが同じになるように設定していきます。

はてなブログのURLフォーマット

はてなブログには以下の3つのURLフォーマットがあります。

1. 標準
標準のフォーマットです
例: /entry/2011/11/07/161845

2. タイトル
記事のタイトルがURLになります
例: /entry/2011/11/07/週末は川に行きました

3. ダイアリー
はてなダイアリー風のフォーマットです
例: /entry/20111107/1320650325

これは「設定 > 詳細設定」から確認できるので、自分のURLフォーマットを確認しておきましょう。

WordPressのパーマリンク設定

パーマリンク設定は、記事ごとのURLをどのように決めるかについての設定です。

「設定 > パーマリンク設定」でパーマリンク設定のページに飛べます。

WordPressのパーマリンク設定にはいくつかのテンプレートが用意されていますが、それ以外に「カスタム構造」があります。

カスタム構造を使えば、自分の好きなURL構造を指定することができます。

カスタム構造では、以下の「構造タグ」を使ってURL構造を指定します。

構造タグ 説明
%year% 投稿された年を4桁で取得します 2018
%monthnum% 投稿された月を取得します 05
%day% 投稿された日を取得します 28
%hour% 投稿された時 (時間) を取得します 15
%minute% 投稿された分を取得します 43
%second% 投稿された秒を取得します 33
%post_id% 投稿の固有IDを取得します 423
%postname% 投稿名 (投稿 / 固定ページ編集パネルのスラッグ) を取得します sample-page
%category% カテゴリー名 (カテゴリー新規追加 / 編集パネルのスラッグ) を取得します
%author% 投稿の作成者を取得します

post_id というのは各記事に自動で割り振られるIDなので、変更することはできません。

一方、postname (= URLスラッグ) というのは各記事ごとにユーザ側が設定する文字列なので、自由に変更することができます。

従って、postname をうまく利用してURLが以前と同じになるようにします。

ここからは、3種類のはてなブログURLフォーマットごとに説明します。

URLフォーマットが「標準」の場合

一見、パーマリンク設定のカスタム構造で以下のように設定すれば良いように見えます。

/entry/%year%/%monthnum%/%day%/%hour%%minute%%second%

しかし、これだと記事が正しく表示されません。

それは、WordPress5.4.1 からパーマリンク設定が厳しくなり、日付のみのURLは非推奨となったためです。

構造は必ず %post_id% あるいは %postname% で終了し、各パーマリンクが個々の投稿を指すようにしてください (例 /%year%/%monthnum%/%day%/%postname%/ )。

具体的な変更点 ↓(詳しく知りたい方向け)
コードの変更部分

正しく表示されるようにするために、URL末尾の「%hour%%minute%%second%」を「%postname%」に置き換えます。

具体的な手順としては、まずパーマリンク設定のカスタム構造で以下のように指定します。

/entry/%year%/%monthnum%/%day%/%postname%

次に、各記事のURLスラッグがURLの末尾部分と一致するように変更します。
例えば、元のURLが以下の場合、URLスラッグは以下のように変更します。

元のURL: /entry/2011/11/07/161845
変更後のURLスラッグ: 161845

この変更をすべての記事に行うことで、同じURLでの移行は完了となります。

URLフォーマットが「タイトル」の場合

パーマリンク設定のカスタム構造で以下のように設定します。

/entry/%year%/%monthnum%/%day%/%postname%

その後、各記事のURLスラッグが記事のタイトルと一致するように変更すれば完了です。

URLフォーマットが「ダイアリー」の場合

まず、URLフォーマットが「標準」の場合 を理解してください。

「標準」の場合と同じ問題を回避するため、パーマリンク設定のカスタム構造で以下のように設定します。

/entry/%year%%monthnum%%day%/%postname%

その後、各記事のURLスラッグがURLの末尾部分と一致するように変更すれば完了です。
変更例を載せておきます。

元のURL: /entry/20111107/1320650325
変更後のURLスラッグ: 1320650325

最後に

少々面倒な手順もありましたが、以上の作業を行えば同じURLで移行できます。

何か問題点があればコメントにてお知らせください。

ブログ運営技術系

コメント一覧

  1. 上田 より:

    初めまして。はてなブログからワードプレスに移行を試行錯誤しており、移行の際にパーマネントリンクが引き継げないという状況です。

    こちらのページに記載されている『URLフォーマットが「ダイアリー」の場合』というパターンになるのですが、記載されている通りに『/entry/%year%%monthnum%%day%/%postname%』をいれてみたところ、

    例: /entry/20111107/1320650325が/entry/20111107/20111107-1320650325と変換されてしまう様です。

    どうにか引き継ぐ方法はございませんでしょうか?

    • Y.M より:

      まず、「投稿」から、パーマリンクを変更したい記事の編集画面を開きます。
      次に、「URLスラッグ」に該当する部分を変更します。
      本記事で説明している通り、URLスラッグにはURL末尾の部分を入力してください。

      これでうまく引き継げないでしょうか。

タイトルとURLをコピーしました