サブディレクトリにあるサイトを別の場所へ移転した際に.htaccessを使ってリダイレクトする方法

サブディレクトリにあるサイトを別の場所へ移転した際に.htaccessを使ってリダイレクトする方法

主サイトとは別にWordPressでお試し程度にサブディレクトリに作ったサイト。

これが意外にいい感じでアクセスされてて、別ドメインで独立させてもいいんじゃない?と考えたとき、必要になるのがサイト自体の引っ越し&アドレス変更のスキルと今までのサイト全体の転送設定。

転送設定自体はWordPressのインストールディレクトリにある「.htaccess」ファイルへ転送するための記述を追加するだけなのですが、ドメイン丸ごとならともかく、サブディレクトリにあるサイトの転送となると、なかなか情報が少ないですね。

今回たまたまサブディレクトリにあるWordPressサイトを別ドメインのサブディレクトリへサイトの転送を行ったので、その時.htaccessファイルへ追加したコード(例)の紹介と、確認時にハマった事柄について対処したことを備忘録を兼ねて紹介しておきます。

本ページは.htaccessファイルへの追記や変更を行った経験がある、または、スキルがあることを前提にしています

なお、WordPressには転送用のプラグインが数多く存在しますが、それらは個別の投稿や固定ページをリダイレクトするのが主目的で、サイトごとリダイレクトしてしまうと、最悪の場合には転送がうまくいっていないにも関わらず移転元・移転先サイト双方にアクセスできなかったり、管理画面が開けなくなってしまったりすることがありますから、.htaccessファイルへ直接記述することをおすすめします。

ページ上部へ戻る▲

サイトを丸ごと転送するための.htaccessへの記述内容

転送するサイトが収容されているサーバー上のディレクトリにある.htaccessをサーバーのファイルマネージャーで開くか、FTPで一旦パソコンへダウンロードし、先頭行へ以下のコードを、貴サイトの条件に合わせて変更して記述します。

コードの生成は以下のコピーのほか、CMANさんのサイトで自動生成することもできます

RewriteEngine on
Redirect permanent /現在のディレクトリ/ 転送先ディレクトリ/

【例1】どこかのドメインの参照している場所の「abc」というディレクトリを、「https://hogehoge.com」というドメインの「abc」というサブディレクトリへ転送するなら、以下のように記述します。

RewriteEngine on
Redirect permanent /abc/ https://hogehoge.com/abc/

【例2】どこかのドメインの参照している場所の「abc」というディレクトリを、「https://hogehoge.com」というドメインの直下へ転送する場合には以下のように記述します。

RewriteEngine on
Redirect permanent /abc/ https://hogehoge.com/

ページ上部へ戻る▲

正常にリダイレクトできないときは

前述した方法でリダイレクトできたはず..が、きちんとリダイレクトされないことがあります。

例えば404ページが表示されてしまうなど。

そして全部ではなく、一部のページだけリダイレクトされたりされなかったりという現象が発生することもあります。

そんなときは、焦らず、コードの見直しなどをむやみに行わず、以下のようなチェックをしてみましょう。

外部ツールでチェックしてみる

本当にリダイレクトの記述がおかしいのか?を確認するため、ohotuku.jpさんのリダイレクトチェックを使ってみましょう。

ページを開いたら、移転前の特定ページのURLなどを入力して、「チェックする」をクリックするだけで、簡単にチェックできます。

サブディレクトリにあるサイトを別の場所へ移転した際に.htaccessを使ってリダイレクトする方法|HABONE
リダイレクトチェックのスクリーンショットです

これを使って、いくつかの旧ページがきちんとリダイレクトされているようであれば、まずコードに間違いはありません。

なお、自分のブラウザで確認しないと気が済まないという方は次項の対処をしてみてください。

ブラウザのリダイレクトキャッシュをクリアしてみる

Google Chromeなどのブラウザでは、旧ページへアクセス→リダイレクトという流れを削減するためにブラウザ側でリダイレクトの履歴をキャッシュ(一時保存)する機能があります。

これは想像ですが、一般的にリダイレクトは

  1. 移転元のページへアクセスする
  2. リダイレクト設定によってリダイレクトがかかっていることが確認される
  3. 2に従ってリダイレクト先へ転送される

という流れで行われますが、もしも移転元のサイト(ドメイン)が削除されてしまったら、移転先にたどり着くことができません。

それを一定期間回避するためにキャッシュ機能があるものと個人的には思慮します。

一見便利なのですが、自身でリダイレクト設定を行った場合には、これがハマるポイントとなることがあります。

もしもリダイレクトがうまくいかないときにはこのキャッシュをクリアしましょう。

とはいえ、目で見て1つ1つ..というのは面倒なので、Google Chromeブラウザなら、Clear Cacheという拡張機能が便利です。

拡張機能を入れると、ブラウザの右上にリサイクルマークに似たアイコンが表示されるのでクリックするだけです。

有効化時に機能の詳細設定画面が出ますが、基本「キャッシュ」だけチェックが入っている状態なので変更する必要はありません

リサイクルマークが表示されない場合にはブラウザの画面右上にある拡張機能アイコンをクリック後、Clear Cacheの横のピンマークをクリックすればアイコンが表示される(いつでもクリアできる)ようになります。

キャッシュをクリアしてリダイレクトが正常にできることが確認できたら、この拡張機能は不要ですので、削除するなり、無効化するなりしておけばいいでしょう。

ページ上部へ戻る▲

サイトの移転とリダイレクトが終わったら

検索エンジン最大手のGoogleでは、サイトの移転とリダイレクト処理後、アドレス変更ツールを使ってドメイン単位での移転に関しては通知を行う方法がありますが、一部の移動(サブディレクトリのサイトを別ドメインへ移転するなど)に関しては、私が知る限りでは、以下のような段取りで処理されていくのを待つしかありません。

  • 移転後のサイトをウェブマスターツールでプロパティ追加する
  • リダイレクトを通じてアクセスされたページが移転後のURLへ自然に置き換わるのを待つ

しかしながら、これには時間がかかる場合が多いですし、リダイレクトされない(アクセスのない)ページや、Googleによる再クロールがない場合にはずっと旧ページが残ってしまうことになります。

これをできるだけ早くするためには、以下のようにするのが効果的でしょう。

  • ウェブマスターツールでプロパティ追加したら、積極的にインデックス登録リクエストを行う
  • 移転後のサイトのサイトマップ出力をし、ウェブマスターツールで登録する

経験上では1~2日でアクセスの比較的多いページはインデックスの移行が始まっていきますからあとは待ちつつ「site」コマンドでインデックス状態を確認しながら、移行されていない(インデックスされていない)ページはインデックスリクエストをしていくようにすればいいでしょう。

著:清水 由規, 著:清水 久美子, 著:鈴木 力哉, 著:西岡 由美, 監修:星野 邦敏, 監修:吉田 裕介
¥2,948 (2022/08/11 01:26時点 | Amazon調べ)
著:Mana
¥2,200 (2022/08/11 01:26時点 | Amazon調べ)

作者:

WordPress用テーマ「HABONE」の開発、プラグインやテーマの翻訳、WordPressの使い方やカスタマイズ方法などの情報を配信しています。

年齢:40代 趣味/園芸・ペット・卓球