管理画面以外の記事すべてを”301redirect”する一番簡単な方法

趣味301redirect, redirection, プラグイン, 簡単


サイト移転に伴って301リダイレクトをしたいという方はたくさんいると思います。
もちろん私もそうでした。

とりあえず、「サイト 転送」とかでググるんですよね。

すると何やら『301 redirect(リダイレクト)』というヤツが必要らしいという事にたどり着きます。

で、次は具体的な方法ですよね。


おそらく大きく二つの方法が見つかったと思います。

  1. 「.htaccess」を編集する方法
  2. プラグインを入れる方法

1つめの「.htaccess」はWordPressのシステムに関わる機能ですから、可能な限りいじりたくない!なので却下。

2つめのプラグインはこれまた2つぐらいでてきたはずです。
「Redirection」と「Simple 301 Recirects」ですね。

どっちでも上手くいきそうですが、全記事リダイレクトは簡単なのに『管理画面を除外』という条件を足すだけでいきなり難しくなる。

これもまた難易度が高い!

でも諦めるわけにはいかない!

そんなお困りときにできる難しい表記なんか必要としない超絶簡単な解決方法をご紹介します。

使うのは”Redirection”のプラグイン

冒頭でもお話した通り、「.htaccess」とかのシステムファイルは基本的に触らないに越したことはありません。

もし設定に失敗して起動しなくなると復旧がものすごく面倒ですし、最悪復旧できない場合すらあります。

なので安全策をとってプラグインを使う方法を推奨します。

プラグインであれば失敗しても、ダッシュボードの「プラグイン」から該当のプラグインを削除してしまえばほとんどの場合元に戻せます。

この記事を読んでいる方はご存知だと思いますが、「Redirection」のプラグインは「Redirect(リダイレクト) = 転送」を難しい設定なくしてくれるプラグインです。

ソース(転送元)  : http://○○○.com/test
ターゲット(転送先): https://www.○○○.com/test

例えば上のような設定をすると、「test」という記事に「http」で「wwwなし」のURLでアクセスしてきたユーザでも、強制的に「https」の「wwwあり」のURLに転送してくれます。

これはSEO的には大事なことです。
複数のURLから同じところにアクセスするのではなく、すべてのアクセス方法を集約することにつながるからです。

とまぁ、こんなイメージもしやすい単純な動きですが、設定を誤ると大問題を引き起こしてしまいます。

301リダイレクトって何? redirect(リダイレクト)は「サイトの転送」です。「301」というのはリダイレクトの種類の1つを指しています。 301の場合は『恒久的』です。
つまり301リダイレクトとは『恒久的な転送』のことです。
今後は「このURLが正しいサイトです」というのをGoogleなどの検索エンジンに伝えるために使用します。

Redirectionで起きる問題とは?

Redirectionで起きてしまう問題について考えましょう。

先ほど例に挙げたような1つの記事を転送するような設定なんて、ほとんど必要ないことが多いです。

「URLをどうしても変えたくて、1つの記事だけURLを変えた」

で、リダイレクトを設定するなんていうのはレアケースでしょう。

おそらく大半の方は「サイト移転」「カテゴリの変更」など複数の記事を転送したいというのが目的でRedirectを設定しているはずです。

では、単純にすべての記事を転送する設定だと↓のもので実行可能です。
※まだ説明段階ですので、絶対に設定しないでください!

ソース(転送元)  : http://○○○.com/*
ターゲット(転送先): https://www.▲▲▲.work/*

これは「http://○○○.com」にある全ての記事を「https://www.▲▲▲.work」に転送するという設定です。

実際に目的は果たせます。

果たせるのですが、何もかもすべて転送されてしまいます

「何が問題なん?」

と思われた方、設定すると私のように大惨事を招いてしまいますよ。

自分のサイトでWPの管理画面(ダッシュボード)に移動して、URLを確認してみてください。
細かいところが違うとは思いますが、

「https://www.◇◇◇.com/wp-admin

のようになっていませんか?

そうです。

例で挙げたような設定にすると

ソース元にしていた「http://○○○.com」の「http://○○○.com/wp-admin」もリダイレクトの対象になります。

こうなってしまうと終わりです。

設定直後にどこでもいいからダッシュボード内で移動すると「ログイン画面」に飛びます。

それも「http://○○○.com」のログイン画面ではなく、ターゲットにしていた「https://www.▲▲▲.work/wp-admin」のログイン画面です。

どういうことか判っていただけたと思います。

そうです。

もうソース元のダッシュボードにアクセスすることはできなくなってしまうのです。

ターゲットにしたURLにどうアクセスしてもリダイレクトされてしまいます。

設定を戻したり、新しい記事を投稿したりということも何もかもできなくなってしまいます。
この事態を回避するためにサイト移転での301リダイレクトでは、管理画面(ダッシュボード)を除いたすべての記事をリダイレクトの対象にする必要があるのです。


リダイレクトの具体的な設定

Redirectionのプラグイン紹介記事では無駄に具体的なインストール方法とか、設定方法が書かれてるのを良く見かけましたが、「そんなもん感覚でわかるわ!」と思ったのは私だけではないはず。

今お困りなのは、ダッシュボード以外の転送をどうするのかという回避方法ですよね。

私がたどり着いた回避方法はこちらです。

※ソース設定のときに右側にある「正規表現」の選択を忘れないようにしてください

301リダイレクトの設定

ピンク色の網掛け部分が特に注目してもらいたい箇所です。

Redirectionでは上から順に条件にあったターゲットに転送していくようです。

なのでPosが0(一番目の条件)に「管理画面の転送」という条件を入れてしまえば問題は解決します。

つまり、管理画面以外の全記事をリダイレクトする条件は

  1. 管理画面(ダッシュボード)の「/wp-admin」を旧サイト(同じサイト)に転送する
  2. 全ての記事を新しいサイトに転送する

たったこれだけで解決します。

こうすることで管理画面にアクセスしたときは同じサイト内にリダイレクトする。
でも、他の記事は新しいサイトにリダイレクトする。

ということを実現できます。

「全ての記事をリダイレクトする、でも管理画面は除外する」と考えると『除外』の部分でつまずきます

なので、「あらかじめ管理画面は同じサイトにリダイレクトするという、ちょっと無駄なことをしておいて、管理画面以外はすべて新しいサイトにリダイレクト」するという風にすればいいのです。

補足ですが、2つめの条件部分。

ソース  :^/(.*)
ターゲット:https://www.▲▲▲/work/$1

ごめんなさい、正直私もこの書き方を説明できるほど理解していません。

ソースの部分は全記事、ターゲットの$1というのは引数で「ソースと同じURL」という理解で問題ないです。

例えばソースが「http://○○○.com/sample」というようなURLを「sample」とした記事なら、ターゲットのURLは「https://www.▲▲▲.work/sample」に勝手に変更してくれると解釈してください。

ちなみに「はてなブログ」だと「entry」というディレクトリが切られているはずです。

そんな場合は「^/entry/(.*)」とすればentry配下のディレクトリすべてを転送してくれます。

この辺りは理解できたら追記しようと思っています。

万が一”管理画面をリダイレクト”してしまったら

先ほど説明した方法であれば管理画面が別のサイトにリダイレクトされてしまう事はありません。

ですが、何らかの手違いで「http://~~~/*」のような管理画面も含んだリダイレクトを設定してしまった場合の解決方法を紹介しておきます。

私の場合はこれで何とかなった時とならなかった時があります。

なので、運というか何らかの別要素が絡んでくることもあるので、100%ではありませんが理論上直せる可能性がある方法だと思ってください。

その方法は

FTPでアクセスして「plugins」ディレクトリ内の「redirection」を削除する

原因がプラグインにあるので、プラグインを削除してしまえばいいのです。

でも、管理画面(ダッシュボード)はリダイレクトされてしまって、プラグインの管理どころかログインすらできないという状況ですよね。

であれば、別のところからアクセスするしか方法はありません。

単純にFTPで自分のサイトにアクセスして、

「/」→「plugins」→「redirection」

という風に移動するだけです。

万一に備えて「redirection」のディレクトリはFTPでダウンロードしておきましょう。

削除して解決すればいいのですが、二次災害というか別の問題が発生したら困ります。
すぐに戻せるようにしておくのが無難です。

redirectionのディレクトリを消したのにまだリダイレクトされるという場合はもう一つ『別のブラウザでアクセスする』というのも試してみて下さい。

例えばChromeの場合、一度301リダイレクトをするというのを認識すると以後、勝手にリダイレクトをしてしまうそうです。

キャッシュを削除したり、キーボードのF12キーからリダイレクトを勝手にさせない、などの方法をすることもできるのですが面倒です。

IEとかEdgeなど別のブラウザで試す方が簡単で確実です。

私は実験のためにわざとredirectの設定をしたりして何度か失敗しましたが、このプラグインを消すという方法で割と直せました。

なぜか無理な場合もありましたが、、、一度試す価値はあります!

もし絶賛Redirect中で苦しんでいるという方は試してみて下さい。