概要
- 1つのWordpressプログラムで複数のblogを運用したい人向けの記事です。
- この記事で紹介する方法では、.htaccessを設置できる or サーバ上でシンボリックリンクを張れることが前提です。
- この方法なら数行の変更と1つの小さな設定で新たなblogを構築できます。
- Apache向けの設定です。(nginx用の設定ファイルは上手くかけませんでした。)
アプローチ
Wordpressはblogの記事や設定値をデータベースに入れて保存しています。HTTPでアクセスしてきた時に、指定されたURLのpathによってWordpressが参照するテーブル(データベース)の場所を動的に変えることにより1つのWordpress設置で、複数のWordpressのblogを構築できます。
設定
アクセスされたURLのpathとテーブル名の関連付けを行います。
編集するファイルは、Wordpress管理ディレクトリのトップにあるwp-config.phpです。
下の例は、
https://blog.teraren.com/
をメインとして運用して、
https://milklog.teraren.com/
をサブとして運用する場合の例です。
/blog/でアクセスされた場合は、テーブルのプレフィックス(先頭語)にデフォルトである”wp_“を利用します。
/~matsu/milkblog/でアクセスされた場合はプレフィックスに”wp_milklog_“を利用します。
table_prefixに代入する値)を定義します。以下にdiffを載せておきます。
% rcsdiff -r1.1 -r1.3 wp-config.php===================================================================RCS file: RCS/wp-config.php,vretrieving revision 1.1retrieving revision 1.3diff -r1.1 -r1.317a18,31> // determine table prefix according to the REQUEST_URI> $prefix_array = array(> '/~matsu/milklog' => 'wp_milklog_'> );>> if($prefix_array){> $uri = $_SERVER['REQUEST_URI'];> foreach($prefix_array as $search_uri => $search_table_prefix){> if(strpos($uri, $search_uri) === false){ continue; }> $table_prefix = $search_table_prefix;> }> }>>次に、指定されたpathでアクセスできるように設定します。
2種類の設定方法があるのでどちらかを選択してください。SSHでログインできない場合は.htaccessによる設定を選んでください。
1 シンボリックリンク
指定したpathでアクセスしたときに、Wordpressのファイルを参照するようにシンボリックリンクを張ります。
1つめの引数にWordpressの実態、2つめの引数に新たに追加するblogのpathを指定します。
# wordpressが設置されているディレクトリの上で。% ln -s blog milk_log2 .htaccess
新たなpathでアクセスされたときにWordpressの実体へアクセスするようにする.htaccessです。
以下に例を載せておきます。
RewriteEngine onRewriteBase /~matsu/
# rewrite milk blogRewriteRule milklog/(.*) /blog/$1RewriteCond %{REQUEST_FILENAME} !-f [OR]RewriteCond %{REQUEST_FILENAME} !-dRewriteRule milklog/(.*) /blog/index.php [L]# /end of rewrite milk blogアイディア元はこちら。
http://ameblo.jp/curiouseverything/entry-10167447535.html
新しいblogの設定
新しいblogのwordpress管理画面へアクセスするとblogの初期設定を行う画面が表示されます。
注意
- Wordpress2.5以降で動作確認しています。
- Wordpressのアップグレードに影響されない普遍性の高い設定なので、おすすめです。
- (2015/12/3) Worpress 4.3.xでも動作しております。
- (2017/10/31) 共通のファイルを使用すると、テーマやプラグインの管理が煩雑になったり、共通ファイルをblogごとにカスタマイズしたい場合に要求を満たせなくなってきたので1ブログ、1つのWordpressにするようにしました。この方法自体は、今もなお有効です。
メリット
- Wordpress本体、plugin , themeのアップグレードが1発で終わる。
- 新規ブログを立ち上げるのに、PHPファイルに数行追加、webサーバの設定に数行追加するだけで完了する。
デメリット
- 画像のアセットが保存されているディレクトリが1箇所なので、全部のブログの画像が1つのディレクトリに保存されてしまう。それによって、ブログを1つ消したときにそれに関連付いた画像を消すのが困難。
- 上記と同様に同様に、テーマファイル、プラグインも混ざる。1つのブログで導入したプラグインが、全部のブログで表示されてしまっていまいち。