はてなブログからWordPressへ引越すときにリダイレクトでentryを外しwwwなしにする方法

スポンサーリンク

はてなブログからWordPressへ移行するとき、2つのURLの違いをどうにかしたかった

先日、この「感想みかん」ブログをはてなブログからWordPressへ移行しました。はてなブログではproを使い、独自ドメインを使っていましたが、WordPressへ移行するとき、個人的にURLについて二つの課題がありました。

その2つは、

    1. はてなブログでは独自ドメインのURLの頭に「www」がついたが、WordPressではwwwなしをメインにしたい
    2. はてなブログの記事URLには間に「/entry/」が入るが、これも無しにしたい

という課題です。

wwwは、はてなブログでは2018/10/03現在の時点ではwwwありしか選べなかったと思います。WordPressに移行すると、wwwなしをメインにすることもできます。

entryは、はてなの記事URLにはドメインとカスタムURLの間に必ず/entry/がはいります。WordPressは、通常であれば記事のURLに/entry/は入りません。

/entry/をWordPressでもつけ続ける選択もできますが、つけなくていいものをつけ続けるのも変な気がします。

気にしなければ/entry/があろうがなかろうが、どっちでも問題ないんですが、せっかくWordPressに移行したので、wwwもentryも無しの短いスッキリした感じにしたかったわけです。

https://www.kanmika.com/entry/xxxxx-xxxxx

これよりも、

https://kanmika.com/xxxxx-xxxxx

こっちの方がいいな、と。これは完全に好みの問題ですけど。

途中からURLを変えるとなると、過去に貼られたブログへのリンク、Googleなどのサーチエンジンの検索結果、WordPressで書く今後のURL形態にも関係して来ます。

過去のURLリンクはプラグイン「Redirection」で対応

過去にブログへ貼られたリンクや検索結果を活かすために、プラグインの「Redirection」でリダイレクト(転送機能)を使うことにしました。WordPressのダッシュボード→プラグインからダウンロードできます。

Redirectionでは、リダイレクトの定義を作って保存するだけでなく、それをエクスポート、インポートもできます。

Redirectionでリダイレクトしたい項目は2つ。

  1. /entry/ありのURLリンクを/entry/なしにリダイレクト
  2. 日付になっているURLリンクの「/」を「-」に置換してリダイレクト

僕の過去のはてなブログのURLは95%ぐらいカスタム名になっています。それは上記の1で対応。カスタムし忘れた一部のURLだけ日付になっているのでそれは2で対応しました。WordPressにインポートしたはてなブログの記事は「/」(スラッシュ)が「-」(ハイフン)に置換されてしまうので、ハイフンを含むURLにリダイレクトする必要がありました。

https://kanmika.com/2018/02/15/183000/
これが
https://kanmika.com/2018-02-15-183000/
こうなってしまいます。

Redirectionには正規表現を使うことができます。これを使うことでランダムな文字列も一括りのパターンとして扱うことができて、パターンごとの移動や変換が容易にできます。、、と言っても僕も知識は深くなく、見よう見まねでやってるだけなので初心者でも頑張れば使えると思います。

正規表現の打ち方については、こちらのブログ様が大変参考になりました。ありがとうございます。

WordPressリダイレクト用プラグイン「Redirection」のススメ

これらの法則に則って設定した結果がこちら。

画像のように、ソースURLとターゲットURLに、

/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*)$
/$1-$2-$3-$4/

/entry/(.*)$
/$1/

この2組を入れます。上のペアが日付用、下のペアがentryをとる用です。正規表現にチェックを入れます。URLの最後にスラッシュを入れたのは僕の好みです。

この設定だと、リダイレクトが2回発生するケースがありますが、特に問題は起きていません。

リンクからの流入でリダイレクトが発動するとヒット数が増えていきます。上の画像ですと右側のヒット数のところです。増えない場合は正規表現が間違っています。自分で古いリンクを踏んでみたり、直接ブラウザのアドレスバーに古いアドレスを打ち込んでみて、確実にリダイレクトされるかを試してから移行を行った方がよいです。

僕のはてなブログのURLはこの2つの定義で収まりましたが、これ以外のパターンもあるかもしれません。

これでリダイレクトが完成しました。

wwwなしをメインにする場合はサーバー側で設定した

wwwなしをメインにする設定は、サーバー(mixhost)で設定しました。

wwwの有り/無しを統一する方法 – mixhost ヘルプ&サポート

mixhost→マイサービス→cPanel→ドメインの中にあるリダイレクト

ここでwwwありなし全てをwwwなしにリダイレクトする設定を一つ追加しました。

 

設定その他

  • 記事をインポートする前に、WordPressの設定からパーマリンク設定を「投稿名」にする
  • サーチコンソールの設定でwwwありとなしを両方登録し、無しの方にリダイレクトする
  • リダイレクトは複数回になっても問題なし(あんまり多いとだめ)

参考:301リダイレクト設定が2回となったしまったケース – Google プロダクト フォーラム