旧ブログからの転送:http://responsive.aruweb.net/wordpress/multidomain-2/

今後のサイト構築方針を検討して、WordPressのマルチドメイン化を決意

「決意」というと大げさですが、今まで触っていなかった会社のサイトの構造を変えるわけですから、それなりに緊張します。まずは手順を確認。

状況

  1. ドメインは独自で持っている。(仮に example.jp とする)
  2. すでにexample.jpの第2階層に/blog/フォルダが存在しており、壊れたMovable Typeが入っている(更新不可能)
  3. example.jp/blog2/にWordpressをインストールし、そこに旧ブログのMovable TypeからWordPressへの移設を開始。簡易認証した状態でひとつのブログを構築完了。
    『メディア』にアップした画像が投稿内にあるので、そのURLをすべてルートの相対パス(「/」スラッシュから始まるドメインのない表記)に書き変えておきます。(ひとつずつ手打ち…)
  4. 新しくWordPressで構築した記事をすべてエクスポート。
  5. コーポレートサイトでWordPressのマルチドメイン化をすべく、example.jpの直下に2つ目のWordPressをインストール。どうしてもURLの設定とリンクが上手くいかず夜を明かす…

気を取り直して作業再開!手順を書きだして失敗しないように…

準備1:バックアップ

これは言わずもがな、絶対でしょう。WordPressを入れるとは言え、静的に残しておく必要があるファイルがたくさんあるのですべてコピーを作成してローカルに保存。何かあれば、いつでも取り出せるように置いておきます。

準備2:サイトの部分的なクローズ

本来であればサイト全体を「工事中」にして作業すべきなのですが、前日リリースしたばかりのPressReleaseがあり(何故、このタイミングで…)、作業の影響がない静的ページもたくさんあるので、(賛否はともかく)それらのリンクを切らないために、一番シンプルな方法でトップだけを工事中にすることにしました。

WordPressともともとのサイトのインデックスは同じ「index.php」なので、メンテナンス画面を「index.html」で作成し、.htaccessで以下を指定。

DirectoryIndex index.html index.php

これで、普通にアクセスしてきた人は index.html の工事中画面を閲覧することになります。(example.jp/index.php と設定してあるリンクがあったら、普通に見られてしまいますが…)

準備3:改めてルートにWordPressをインストール

DBを新たに作成し(もちろん、もとのDBの初期化でもOK)、改めてWordPressをインストールします。上記理由から、index.php だけは上書きしないように、インストールしていません。

  • /wp-contents/themes/ には、/blog2/でカスタマイズしたテーマフォルダをアップロード
    =カスタマイズしたテーマがそのまま使えます
  • /wp-content/uploads/ も/blog2/ でできているものをアップロード
    =記事投稿でアップロードした写真をコピー
  • /wp-contents/plugins/ には、同じく/blog2/ でインストールしたプラグインをアップロード
    =プラグインを管理画面からインストールの手間が不要に
たまに、超簡単なWordPressが何度インストールしても上手くいかない!という方がいますが、遅いサーバーだったりレンタルサーバーだったりすると、大量にあるWordPressのファイルが全部あがりきっていない場合があります。全部きちんとサーバーアップされているか、まずは確認を!

問題対応:/blog/ がURLに必ず入ってしまう

管理画面にアクセスしたところ、パーマネントリンクの設定で、デフォルト(編集不可な位置)に /blog/ が入ってしまっており、大変苦労をしました。

私は基本も知らず.htaccessを必要範囲で触るだけなので、この結構万能な設定ファイルが悪さをしているのでは?!と仮説して、一旦 /blog2/ の.htaccessを削除。

これで、不具合がなくなる期待をしたのですが解決しませんでした。基本的に.htaccess というのは、設定されている階層以下にしか影響を及ぼさないのでしょうか。
※この疑問は未だ調査中です

色々と検索を繰り返して見つけた英語のページ(Category, Tag Base – upgrade issue)にその解決策が。

どうやら、ディレクトリでマルチドメイン化していると、ディレクトリの重複を回避するためか、自動でメインのサイトには /blog と付けるようです。(サブドメイン型の場合はこの問題は発生しないとのこと)

サイトの記述どおりに「wp-admin/options-permalink.php」を開き、permalink_structure に関係する記述の /blog をすべて削除しました。

実はこれでやり方が正しいのかわかっていないのですが、ひとまず問題なく動いています。

それにしても…どういった状況だとマルチドメイン化したいのか、と考えると、自動的に /blog を表示してしまうのは、ユーザビリティ上の欠陥と言わざるを得ません。WordPress使っているからって、ブログを構築するとは限らないのでは…。

想像力が足りないですね。。

公式サイトなのでテスト環境も準備

会社のサイトということもあり、触るのは私だけではありません。ブログを更新する人はもちろん、マルチドメイン化した別のサイトを私以外の誰かが構築するかもしれません。

そこで、レンタルサーバーの開いているところにコーポレートサイトと全く同じ状況のWordpressを置いてみました。テスト環境と言っても別ドメイン・別サーバーです。テスト環境になるのか?という疑問もあるかと思いますが、複雑なシステム開発をするわけではないので、利用するデータベース(MySQL)とPHPのバージョンが同じであれば問題ないと判断しました。

  1. テスト環境にWordPressをインストールしマルチドメイン化設定
  2. 「Theme」「plugin」「uploads」フォルダをまるっとコピー
  3. メインとなるブログの「外観」「設定」を本番環境と同じように設定
  4. 本番環境のブログデータを全てエクスポート(プラグイン「WordPress Importer」)し、テスト環境にインポート

ここまででほぼほぼ問題はなかったのですが、いざサイトを見てみると投稿に添付した画像が一切表示されていませんでした。。それもそのはず、投稿ないの画像へのパスは、「メディア」を使うと絶対パスで入るんですね。

仕方がないので今までの分はルートの相対パスにひとつひとつ書き変えて、解決。

これで、恐怖心を減らしつつ、別のページ構築をはじめることができるようになりました。