WordPressでURLを別のURLにリダイレクト(自動転送)する方法

(((((((((((っ・ω・)っ ブーン

Canon EOS Kiss X7 (60mm, f/4, 1/500 sec, ISO100) at 10:52 on 2017/07/22

WordPressで一度投稿した記事を別のURLににリダイレクト(自動転送)させたいということは、まれにあると思います。

  • 記事のカテゴリを変更したのでURL(パーマリンク)が変更されてしまった
  • ブログを別のドメインに引っ越したので、URLが変更になった
  • 特定の記事やカテゴリを別のブログに移転させた

などなど。

WordPressは記事のパーマリンクを変えると自動的にリダイレクトさせてくれるようになっていますが、まれに期待通りにしてくれないときがあります。

昔よくあったのは「このページは引っ越しました。引っ越し先はこちら」みたいな表示。いま、そんな表示はほとんど見られません。

ページを閲覧している人にとっては「このページは移転したんだな」ということがよく分かっていいのかもしれないですが、Googleなどの検索エンジンに高評価を得ているページにとっては、評価を下げたり、なくしたりする結果になります。

検索エンジンの評価を保ったまま、元のページから移転先のページへ転送させる方法があります。

リダイレクトとよばれる方法です。

端末のブラウザがサーバーに対して「このページを読みたいです」とリクエストを送ると、サーバーはブラウザに対して「返事(レスポンス)」を返してきます。その返事の内容の種類のことを「HTTP Status(ステータス)」といいます。

リクエストの内容に問題がなく、ページが存在するときは「200 OK」というステータスが返ってきます。「問題ありません。はいどうぞ。」という意味です。

残念ながらページが存在しなかったときは「404 Not Found」(ページが見つかりません)が返ってきます。そのときはそのサイト(ブログ)の「ページが見つかりません」のページがブラウザに表示されます。

サーバーから「301 Moved Permanently」というステータスが返ってくることがあります。これは、このページは「恒久的に移動した」という意味で、移動先のURLも教えてくれます。

「301」のステータスを受け取ったブラウザは、サーバーに教えてもらった移動先のURLに自動的にアクセスします。ページを閲覧している人は何も意識することはないし、検索エンジンのクローラー(bot)に対しても同じ処理をさせるから、移転元のページの評価を移転先のページへ引き継げる、というわけです。

参考URLHTTP ステータスコード(ウィキペディア)



WordPressのページをリダイレクト(自動転送)させる方法

WordPressでページをリダイレクトする方法は2種類あります。

  • .htaccessに記載をする方法
  • プラグインで解決する方法

まずは.htaccessに記載する方法を紹介して、そのあと、プラグインで解決する方法を紹介します。

.htaccessに記載する方法

WordPressでブログを開設すると、WEBの一番上の階層に「.htaccess」というファイルができています。このファイルは「アクセス制御ファイル」といって、サーバーの動作をいろいろ変更させるために存在しています。

ファイルはFTPなどの方法、または、「ファイルマネージャー」などとよばれる、レンタルサーバーのコントロールパネルなどにある機能を使ってダウンロード・アップロード、閲覧、編集ができます。

FTPについてはこちらの記事をご覧ください。

ブログやWebページを置いているWebサーバにはファイルを転送する仕組みがあります。パソコンからサーバにファイルを転送したり、逆に、...

.htaccessにリダイレクトの処理を書くことで、

  1. 個別のページ(記事)を別のURLに転送させる
  2. 条件に合致したページを別のURLを転送させる
  3. サイト(ブログ)全体を別のサイト(ドメイン)に転送させる

といったことができます。

基本的な書き方

リダイレクトの基本的な書き方は下記の通りです。

#
「#」から後ろは「コメント」といって、メモを書いたり、その行の処理を無効にするために使います。あとで何のために書いたのかを判別できるようにするために書きますが、特に必要なものではありません。

<IfModule mod_rewrite.c>
サーバーで「mod_rewrite」というモジュールが有効になっていれば、という意味です。WordPressが使えるレンタルサーバーは有効になっているはずです。

RewriteEngine On
リダイレクトの設定を有効にさせます。

RewriteRule
リダイレクトのルールですよ、という意味です。

転送元URL 転送先URL
「転送元のURL」を「転送先のURL」にリダイレクトさせます。

[R=301,L]
「R=301」は、HTTPステータス「301 Moved Permanently」でリダイレクトさせますよ、という意味です。「R」だけでも「301 Moved Permanently」になるのですが、「R=301」と書くことで書いた本人(⇐ぼくのことです)にわかりやすくしています。「R=302」「R=307」と書くことで、「301 Moved Permanently」以外のステータスでリダイレクトさせることが可能です。

「301」「302」「307」などの番号は、全て結果的にリダイレクトされますから、端末のブラウザの挙動に変わりはありませんが、Googleなどのクローラーに対しては意味が変わってきます。

「L」は、その行で条件が一致したら、次の行以降は処理を実行しませんよ、最後ですよ、「Last」という意味です。

この書き方を応用して、いろいろなリダイレクトの処理を行います。

WordPressをインストールしたときに既にリダイレクトの設定が書かれていますが、ここはWordPressの設定を変えたときに書き換えられますから、そこには書かず、ファイルのいちばん先頭に書きます。

WordPressが書き込んだ内容は下記のようになっています。

「# BEGIN WordPress」と書かれている行よりも前に書いてください。

個別のページをリダイレクトさせる

個別のページを転送するには、下記のように書きます。

これは、現在の別のドメインにある下記のページを、「blog.maro-log.net」にリダイレクトさせるための内容です。

  • post-1217/
  • post-1235/
  • post-1267/
  • post-1294/
  • post-1304/

例えば、sample.netという仮のドメインがあったとして、

  • http://sample.net/post-1217/

に対してアクセスがあったら、

  • http://blog.maro-log.net/post-1217/

にリダイレクトさせています。

「^」は「先頭一致」させるときの書き方で、、http://~から始まるアドレスのうち、サーバー名を除いた部分が「post-1217/」に一致したら、という意味です。

条件に合致したページをリダイレクトさせる

上記の場合は、個別のページを個別にリダイレクトさせましたが、「小文字、大文字のアルファベットと数字とハイフン」で構成されているページの記事は全てリダイレクトさせる場合は下記のように書きます。

([a-zA-Z0-9-]*)
小文字、大文字のアルファベットと数字、「-」(ハイフン)と一致するとき、という意味です。「*」は「0回以上の繰り返し」を意味します。つまり、「小文字、大文字のアルファベットと数字、ハイフンが0回以上続く文字」に一致したら、という意味になります。

「^」は「先頭一致」、「$」は「終端」の意味です。つまり、^([a-zA-Z0-9-]*)/$と一致したものが「blog.maro-log.net/$1/」の「$1」に置き換えられる、というわけです。

WordPressの設定によって変わりますが、URLの一番うしろに「/(スラッシュ)」がつかない場合は、下記のように記載します。

サイト(ブログ)全体をリダイレクトさせる

サイト(ブログ)全体を別のドメインに引っ越したときは、下記のように記述します。

「.」は、「改行以外の1文字」を表します。それに「*」が付いているので、「改行以外の文字が0回以上続くとき」という意味になります。
ドメインへのすべてのアクセスが「blog.maro-log.net/」へリダイレクトされます。

プラグインでもできます

WordPressのプラグインでも個別のページ(記事)をリダイレクトさせることができるものがあります。「Simple 301 Redirects」というプラグインです。

「Simple 301 Redirects」が表示されますので、インストールして、有効化します。

インストールして、有効化するだけで使えます。

リダイレクトの設定は、「管理ページ」→「設定」→「301 Redirects」で行います。(画像をクリックすると大きな画像が表示されます)

301 Redirects

一番下の行の右側に「リダイレクト元」、左側に「リダイレクト先」のアドレスを入れます。

「変更を保存」をクリックすると、設定が保存されます。右端の「Delete」をクリックすると、その行の設定は削除されます。

少ないページをリダイレクトさせるには便利ですね。

しかし、大量のページをリダイレクトさせるときは管理が難しくなりそうです。また、PHPがリダイレクトの処理を行っているので、ごくわずかとはいえ、処理の速度は「.htaccess」に比べると遅いです。

目的に応じて使い分けていただくといいと思います。

.htaccessの編集は、サーバーエラーを引き起こす可能性があります。すぐに元に戻せるように編集前のファイルをバックアップしておくなどしてください。
「カメラ初心者」兼「週末Web随筆家」。

最近、ちっちゃい花を撮ることがめっちゃ大好きです。愛機はCanon EOS Kiss X7。50mm単焦点レンズと60mmマクロレンズで小さな花を撮ることにこの上ない喜びを感じています。

職業はWEBのシステムを作ったり保守したりするSE/プログラマというものをしています。

「まろ」と呼んでいただけるとうれしいです(´ー`)

いわゆる「画像直リンク」、画像の複製は固くお断りいたします。
スポンサーリンク
この記事が気に入ったら
いいねをお願いします!

最新記事をお届けします。

シェアしていただけるとうれしいです

フォローよろしくお願いします

関連記事



スポンサーリンク