システム開発・構築の神様

新しいサービスや技術を使った開発や構築。その他不具合解決など

はてなブログからWordPressへ完璧な移行が完了!日付アーカイブの問題を解決する

前回の続きです。https://system.hot-maker.com/141/

はてなブログからWordpressへ画像ファイルの移行が完了しました。移行ツールを作成しサクッと移行ができたと喜んだのもつかの間!ポチポチとリンクを遷移していたらあれ?何かがおかしい・・・まだテーマの調整が終わっていないので、おかしいのは当然?そう思っていたのですが、いざsingle.php(詳細ページ)を変更しても、デザインがまったく反映されないことに気づくのでした。

いろいろと調べて見ると・・・

どうやらはてなのURIが、Wordpressで日付として処理されるためらしいです。最近Wordpressがバージョンアップしてそのような仕様になったようですね。残念な結果になりました。

はてなのURL(移行前のサイト)この形式が駄目!
https://systemdevs.hateblo.jp/entry/2020/03/28/184911

わざわざ、WordPressのパーマリンクをはてなに合わせていたのですが・・・
http://system.hot-maker.com/entry/2020/03/28/184911
無駄になってしまいました。まあ、あまりこのURIが好きでは無かったので、ある意味ちょうど良かったのですが・・・

ただ今更変更するのも面倒なので、はてなブログのURIで何とかWordpressの詳細ページを開けないのか?いろいろと模索しました。add_rewrite_ruleとWP_Queryを組み合わせて内部的に日付を元に該当する記事を取得できないのか?試して見ましたが・・・よくよく考えると、事前にrewrite_ruleが確定してしまう?ため、動的な処理ができない?ことに気づきました。仕方が無いので、別の方法で対応することにしました。

そこで、どうせ変更しなければならないのだから、いつも使っているスッキリしたパーマリンク(post_IDのみ)に変更しました。
https://system.hot-maker.com/159/

今回チャレンジした内容

.htaccess を使い、はてなからのアクセス(はてなURI: /entry/日付…)時は、リダイレクト用のスクリプトを経由させる仕組みを取り入れました。

  • 経由させるスクリプトで、従来の日付から投稿記事1件を取得
  • 取得した記事情報から、post_IDを取得しリダイレクト
  • WordPressのパーマリンクを/%post_id%/に変更

これで、従来の仕様を活かしつつ、はてなブログの各記事から完全なリダイレクトが可能になりました。

実際に流れを確認する
https://systemdevs.hateblo.jp/entry/2019/09/26/110720

無事に、post_IDベースのURLへリダイレクトされるようになりました。

しばらくアクセス解析などを眺めながら、問題がないのか?確認していきたいと思います。

▼.htaccess のリダイレクト設定内容
# 記事へのアクセスは中継するスクリプトへ渡す
RewriteRule ^entry/([0-9]+)\/([0-9]+)\/([0-9]+)\/([0-9]+)$ hatena_redirect.php [L]

# カテゴリーへのアクセスは転送
RewriteRule ^archive/category/(.*)$ category/$1 [R=301,L]

hatena_redirect.php で、日付から対象となる記事をWP_Queryで検索し、該当する投稿情報を取得する。その後、post_IDを元に作成したURLへ再度301リダイレクトをさせれ完了です。

これがベストなのかは分かりませんが・・・今の所問題も無く動作しています。

関連記事