necobitのページは現在WORDPRESSで構築しています。
開設して8年、だいぶコンテンツも増えて来て
最近一部をデータ的に別のサイトとして
管理したくなってきました。
WORDPRESSでは
http://aaa.exsample.com
というサブドメインタイプと
http://exsample.com/aaa/
というサブディレクトリタイプで別サイトが構築できるそうです。
(別ドメインもできるそうですが今回は割愛)
今回はサイト内コンテンツの管理のみを分離したいので、
後者のタイプを選択。
(後にわかったのだが、現在運用しているエックスサーバーでは
WORDPRESS上ではサブドメイン運用はできない模様)
しかし調べてみると、
WORDPRESSでのサイトを開設後1ヶ月以上経過すると
それ以降はサブディレクトリ型の複数サイト運用は
出来ない事が判明。
まあ意地悪でそんなことをする訳は無く、
なんらかの問題が発生する可能性が
あるということなんでしょう。
WORDPRESSを再インストールするとか、
この際サーバーを引っ越して1から構築しなおすかとか
色々考えたけどそうなるとかなり面倒。
なんとか無理矢理サブディレクトリ型のマルチサイトに
切り替えられないか調べたら、出来ました。
※一つ間違えるとデータベース、サイトデータが
消失、破損する可能性があります。
necobitも実際何度か冷や汗をかきました。
.htaccessって何?wp-cofig.phpって何?
という人は手を出さない方がいいです。
また後々問題が出てくる事もあるかもしれません。
やる際には自己責任で。
今回の作業にあたってこちらのページが(リンク)
とても参考になりました。
わかりやすい解説をありがとうございます。
下準備
大前提として、WORDPRESSのインストール先が
ドメイン直下である必要があるそうで、それ以外だと
色々と問題が出るそうです。
まずデータベースとサーバーのバックアップをとりましょう。
やり方がわからない人は失敗した時に全部消えて
画面の前で呆然とする事になるのでやらない方がいいです。
ある程度仕組みを理解できている人向けの簡単説明
通常のマルチサイト化の作業をしながら、
ネットワークのインストールでコンフィグを書き換える際に
define( ‘SUBDOMAIN_INSTALL’, true );
のtrueをfalseにする。
この時点でログインし直すと.htaccessの書き換え指示内容が
サブディレクトリ型のものに変わるので、
後はWORDPRESSの指示通りに。
ファイルのアップロードパスは空欄にする。
以上です。
詳細説明
ドメイン直下のwp-config.phpファイルに
以下の文を追加します。
—
define (‘WP_ALLOW_MULTISITE’, true);
—
マルチサイトにするよ、という宣言ですね。
場所はどこでもいいようです。
その後WORDPRESSにログインすると、
「ツール」→「ネットワークの設定」
が出てきます。(WORDPRESSのバージョンによって
名称や場所が違う事があるようです)
WORDPRESS設置直後だとここで
サブドメイン型とサブディレクトリ型の
選択が出るのですが、前に書いた通り
開設から時間が経っているとその選択が出てこず、
強制的にサブドメイン型になります。
インストールを押して、
画面に表示される通りに
プラグインを一度全部オフにして
再度wp-config.phpを書き換えます。が、
—画面に表示される内容
define( ‘MULTISITE’, true );
define( ‘SUBDOMAIN_INSTALL’, true );
$base = ‘/’;
define( ‘DOMAIN_CURRENT_SITE’, ‘exsample.com’ );
define( ‘PATH_CURRENT_SITE’, ‘/’ );
define( ‘SITE_ID_CURRENT_SITE’, 1 );
define( ‘BLOG_ID_CURRENT_SITE’, 1 );
—
ここで
2行目のtrueをfalseに換えて書き換えます。
これでWORDPRESSがサブドメイン型ではなく
サブディレクトリ型の運用と勘違いしてくれます。
ここまでやった状態で再度WORDPRESSに
ログインし直すと.htaccessの書き換え指示のエリアに
表示される情報が変わるので、表示される通りに
.htaccessを書き換えましょう。
necobitの場合は
—
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ – [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
—
となりました。
これを書き換えた時点でサブディレクトリ型の
マルチドメイン運用が出来ているはずです。
改めてWORDPRESSにログインすると、
左上にネットワーク管理者という表示があります。
ここから新しいサイトの追加が出来ます。
今の所不具合は起きていませんが、
何かあったら追記していきます。
落とし穴1-画像が表示されない-
サイトの設定でアップロードパスが指定されていると
アップロードされるパスとWORDPRESSが認識する
パスが違ってしまい、画像が表示されないというトラブルがありました。
アップロードパスを空欄にすると無事表示されました。
この辺りは.htaccessのRewriteの仕方に寄るものだと思いますが、
詳しい事はあまりわかりません。(詳しくないので)
落とし穴2-ログインできない-
もう一つはどのタイミングかは覚えていないのですが、
色々書き換えたりサイトを作ったりしていたら
WORDPRESSのダッシュボードにログインできなくなって
大変困りました。色々やった結果、ブラウザのキャッシュと
クッキーを削除したらログインできるというオチでした。
落とし穴3-DBがおかしな事に-
サブディレクトリに作ったサイトの
パスを変えたらなぜか記事や固定ページの
データーベースがメインサイトのものに置き換わってしまい
目の前が真っ暗になりました。
バックアップから復元して事なきを得ましたが、
本当にバックアップは大切です。
同じ事をもう一度やったら何故か今度はうまく出来ました。
きっと何か違う事をやったのだと思うのですが、
私は一体何やったんですかね?
あまり詳しくない人間が先人の知恵をたよりに
試行錯誤した結果なので、質問されても
答えられる知識は持ち合わせておりません。
あしからず。
【楽天ブックスならいつでも送料無料】WordPressプロフェッショナル養成読本 |
コメントを残す