ブログの移行となると外せないのが301リダイレクトです。
当ブログがはてなブログからWordPressに移行する際も、検索評価を落とさないよう十二分にケアをしてきたつもりでした。
しかしある日をさかいに、意外なところで404エラー(=301リダイレクト漏れ)が多発していました。
そこで今回は、はてなブログからWordPressに移行した結果見えてきた、必要な301リダイレクト設定の全体像をお話したいと思います。
※随時更新予定です
突然多発した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リダイレクトを設定していきます。
記事一覧(カテゴリ別)
まずは記事一覧(カテゴリ別)です。
はてなブログでは
- /category/カテゴリ名
- /archive/category/カテゴリ名
の2パターンがあります。
ちなみに前者はURL直指定でしか飛べない非常にマイナーなURLで、パンくずリストなどのリンクから直接飛べるのは後者のみです。
そのため、前者は無視して後者のみ対応すればOKでしょう。
これらに対し、移行先のWordPressで設定されているカテゴリページ用のURLを1つ1つ当てる必要があります。
各カテゴリに設定したスラッグ(URL用の文字列)をもとに、マッピング一覧を作っていきます。
検索結果
次に検索結果です。URLの読み替えのみでOKです。
- はてなブログ:/search?q=XXX
- WordPress:/?s=XXX
検索クエリの内容をそのままWordPress用のURLに飛ばします。
ただし検索クエリがURLエンコードされてしまわないようケアする必要があります。
ブログカード用
ブログカード用もURLのみ読み替えのみでOKです。
- はてなブログ:/embed/XXX
- WordPress:/entry/XXX (対応する記事URL)
なぜブログカード用のURLが存在するのかの背景を含めて、下記記事で詳しく書いています。
記事一覧(時系列)
時系列の記事一覧のURLは/archive/系と/entries/系があるのですが、前者はカテゴリページとURL体系が似ているため、細かく条件分岐させると複雑で面倒です。
もとの404エラーの数が少ないですから、とりあえずの対処としてURLのパス自体の異なる/entries/系のみ、リダイレクトさせる設定を投入すれば十分でしょう。
- はてなブログ:/entries/年/月/日
- WordPress:/entry/年/月/日
301リダイレクトの設定方法
以上の3点、301リダイレクトの設定に追記します。
WordPressで301リダイレクトを設定する方法は大きく分けて2つあるのですが・・・
- WordPressのプラグインを使う
(参考 Simple 301 Redirectsプラグイン(301リダイレクトの設定)) - サーバーの.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リダイレクトを入れました。
今後もなにか見つかり次第、随時更新していきたいと思います。
コメント