WordPress ブログ

【WordPress】サブディレクトリをサブドメイン移行する

2018年11月26日

小生の運用する某サイトにWordPressで構築しているサブディレクトリがあるんだけど、そのサブディレクトリをサブドメインに移転することにした。

その作業工程の備忘録。

サブディレクトリ:https://example.com/blog

サブドメイン:https://blog.example.com

ドメイン名を「example.com」として解説。

 

サブドメインを作成する

運用しているサイトのサーバーはエックスサーバーを利用してます。

サブドメインの作成は簡単でした。サーバーパネルの「サブドメイン設定」を開いて...

サブドメインを作成するドメインの「選択する」をクリックして...

「サブドメイン設定の追加」タブを選択して①、サブドメインに「blog」②、コメントは自分がわかるように説明を③、「サブドメイン設定の追加(確認)」④をクリックする。のだけどその前に。

ここで注意!

重要!

既存の「index.html」は上書きされる。

そもそも、サブドメイン設定をするとどうなるのかというと、FTPのパスでの

/home/(サーバーID)/example.com/public_html/blog

が、URLでは

https://example.com/blog

https://blog.example.com

と、どちらでもアクセスできるようになります。

「https://example.com/blog」が存在しないなら「blog」ディレクトリが作成されて、そのルートに「index.html」と「default_page.png」というファイルが自動的に作成されます。

既に「https://example.com/blog」が存在して「index.html」と「default_page.png」が存在するときは上書きされます。

今回はWordPressで運用しているディレクトリで、「index.html」は存在しなかったんで私はこのまま進めました。(というか、あとから気づいたんですけどね(^_^;)

注意書きにも書いてありますね①。既存の「index.html」があるならバックアップしておきましょう。確認したら「サブドメイン設定の追加(確定)」をクリックします②。

設定済みの確認画面になります。

既存のサブディレクトリのURLでアクセスしてみましょう。

「index.html」が新たに作成されたので、それが表示されてしまいます。WordPressで利用する「index.php」ではなくて、この「index.html」の方が優先されてしまうのでこうなっちゃうわけですね。

ファイルマネージャーで(FTPクライアントでもいいけど)「index.html」を削除しちゃいましよう。ついでに「default_page.png」も必要ないんで、2つのファイルにチェックを入れて①、「ファイルの削除」②。

これでもとのトップページが表示されるはずです。

 

WordPressの修正

さて、しばらくしてから新しいサブドメインのURLでアクセスしてみたところ、無事、トップページにアクセスできました。

ですが、他のページを開くと、旧のURLで開いてしまいます。WordPressの設定でURLを変更する必要があります。

「設定」のWordPressアドレス(URL)をサブドメインのアドレスに変更します。

次に投稿記事内のサイト内リンクのURLを置き換えます。

データベースのデータを書き換えればいいのかと思いましたが、それは危険とのことで、素直に便利なプラグインを使いました。

プラグインは「Search Regex」です。インストールして有効化。

「Source」①で検索する対象を選びます。「Post content」が投稿や固定ページの内容ですね。私の場合コメントなどはないのでこれだけです。

「Search pattern」②に置き換え前の旧URLを、「Replace pattern」③に置き換え後のサブドメインの新URLを入力して...
「Search」④で検索結果が表示されて、「Replace」⑤で置き換え後のプレビュー、「Replace & Save」⑥で置き換え実行となります。

 

リダイレクトの設定

これでOKなんですが、このままだと元のサブディレクトリのURLでもアクセスできてしまって具合がよくありません。元のサブディレクトリのURLでアクセスがったら新しいサブドメインのURLに転送する設定もしておきます。

エックスサーバーのマニュアルにあった方法ではうまくいきませんでした。→サブドメインのアクセスのみを許可して、ドメインでのアクセスを禁止する方法

ドメインのルートの「.htaccess」に次のリダイレクトの設定を追記。

Redirect permanent /blog/ https://blog.example.com/

これで完了じゃないでしょうか。

あと、Googleのアドセンスやアナリティクスやらを利用していればそちらも変更。

 

-WordPress, ブログ