PR

はてなブログからのWordPress移行で必要な301リダイレクト設定一覧(.htaccess版)

正しい場所へ導くための矢印と靴 アクセス解析

ブログの移行となると外せないのが301リダイレクトです。

当ブログがはてなブログからWordPressに移行する際も、検索評価を落とさないよう十二分にケアをしてきたつもりでした。

しかしある日をさかいに、意外なところで404エラー(=301リダイレクト漏れ)が多発していました。

そこで今回は、はてなブログからWordPressに移行した結果見えてきた、必要な301リダイレクト設定の全体像をお話したいと思います。

※随時更新予定です

スポンサーリンク

突然多発した404エラー

まずはこちらの画像を御覧ください。※実測値に基づくイメージ画像です

404エラー数のグラフ

ここ1週間で突然、検索ロボットが大量の404エラーを検知し始めました。

一部情報によると404エラーは検索順位(SEO)には影響しないということ。

しかし1日あたり750件は多すぎます。読者の方に迷惑が及んでいる可能性があるため、放置できる数字ではありません。

 

そこで原因を調べてみたところ、404エラーは記事本体とは関係のないページで発生していることがわかりました。

どうやらはてなブログからWordPressへ移行した際、ケアしきれていないURLがたくさんがあったようです。

 

というわけで、はてなブログとWordPressのURL体系の差から、301リダイレクトの設定を追記しました。

はてなブログのURL体系

まずははてなブログ側のURLについてです。

はてなブログには4つのタイプのページが存在し、それぞれでURLの体系が異なります。

種類 はてなブログのURL体系
記事 /entry/XXX
記事一覧(カテゴリ別) /category/カテゴリ名
/archive/category/カテゴリ名
記事一覧(時系列別) /archive/年
/archive/年/月
/archive/年/月/日
/entries/年/月/日
検索結果 /search?q=XXX
ブログカード用 /embed/XXX

今回多発した404エラーの多くは、記事一覧(カテゴリ別)検索結果で発生していました。

次いでブログカード用。記事一覧(時系列別)はほぼ発生していませんでした。

必要な301リダイレクト

というわけで、404エラーの多発していたURLパターンについて、301リダイレクトを設定していきます。

下記内容は、パーマリンクが/entry/%postname%に設定されていることを前提としています

記事一覧(カテゴリ別)

まずは記事一覧(カテゴリ別)です。

はてなブログでは

  • /category/カテゴリ名
  • /archive/category/カテゴリ名

の2パターンがあります。

ちなみに前者はURL直指定でしか飛べない非常にマイナーなURLで、パンくずリストなどのリンクから直接飛べるのは後者のみです。
そのため、前者は無視して後者のみ対応すればOKでしょう。

これらに対し、移行先のWordPressで設定されているカテゴリページ用のURLを1つ1つ当てる必要があります。
各カテゴリに設定したスラッグ(URL用の文字列)をもとに、マッピング一覧を作っていきます。

NAE
NAE
面倒な場合、カテゴリ一覧を表示する固定ページに飛ばすと優しいですエン

検索結果

次に検索結果です。URLの読み替えのみでOKです。

  • はてなブログ:/search?q=XXX
  • WordPress:/?s=XXX

検索クエリの内容をそのままWordPress用のURLに飛ばします。

ただし検索クエリがURLエンコードされてしまわないようケアする必要があります。

ブログカード用

ブログカード用もURLのみ読み替えのみでOKです。

  • はてなブログ:/embed/XXX
  • WordPress:/entry/XXX (対応する記事URL)

なぜブログカード用のURLが存在するのかの背景を含めて、下記記事で詳しく書いています。

はてなブログからWordPressへの移行後に404エラーが大量発生
こんにちは、はてなブログからWordPressに移行して5日目のNAEです。 どうやら、はてなブログユーザの方に貼ってもらったブログカード型のリンクで不具合が発生しているようです。 当ブログにも404エラーが大量発生しました。 その原因と、...

記事一覧(時系列)

時系列の記事一覧のURLは/archive/系と/entries/系があるのですが、前者はカテゴリページとURL体系が似ているため、細かく条件分岐させると複雑で面倒です。

もとの404エラーの数が少ないですから、とりあえずの対処としてURLのパス自体の異なる/entries/系のみ、リダイレクトさせる設定を投入すれば十分でしょう。

  • はてなブログ:/entries/年/月/日
  • WordPress:/entry/年/月/日

301リダイレクトの設定方法

以上の3点、301リダイレクトの設定に追記します。

WordPressで301リダイレクトを設定する方法は大きく分けて2つあるのですが・・・

  1. WordPressのプラグインを使う
    参考 Simple 301 Redirectsプラグイン(301リダイレクトの設定)
  2. サーバーの.htaccessを編集する
    (Apacheの場合)

WordPressのプラグインを使う方法のほうが、GUIが使えるのでお手軽ですし安全です。

しかしより下位のレイヤ(Webサーバ)でリダイレクトさせた方が処理速度が早いので、ぼくは.htaccessに追記することにしました。

.htaccessへ追記した内容

こちらが追記内容です。

# /archive系へのアクセスをトップページへリダイレクト
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^archive(.*)$ / [R=301,L]
</IfModule>
# /search?q=へのアクセスを/?s=へリダイレクト
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{QUERY_STRING} q=(.*)$
RewriteRule ^search$ ?s=%1 [R=301,L,NE]
</IfModule>
# /embed/へのアクセスを/entry/へリダイレクト
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^embed/(.*)$ entry/$1 [R=301,L]
</IfModule>
# /entries/へのアクセスを/entry/へリダイレクト
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^entries/(.*)$ entry/$1 [R=301,L]
</IfModule>

上記内容はブログのURLに依存しない書き方をしているため、コピペで使えるはずです。

しかし.htaccessは編集をミスるとサーバーエラーでブログにアクセスできなくなる大事なファイルです。

必ずバックアップを取ったうえ、テスト環境で十分にテストしたのち、本番環境に追記するようにしてくださいね。

まとめ:301リダイレクトは適切に

というわけで、はてなブログからWordPressに移行する際に必要な301リダレクト設定一覧(.htaccess版)でした。

いきなり404エラーが大量発生したので、急ぎで分析して301リダイレクトを入れました。

今後もなにか見つかり次第、随時更新していきたいと思います。

コメント

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