サブディレクトリでマルチブログ(wordpress3.0)さくらインターネット

wordpressを3.0にFTPを使わないで自動でアップグレードしたら、サブドメインで運用する設定になってしまい困っている人がいると思います。
実は私も困っていました。
いくつかトライして強制的にサブディレクトリで運用できるようになったので備忘録です。
尚、この方法はエックスサーバー(このサイトがあるサーバー)でも使えました。
ファイルをエディタで開くときは設定を必ずUTF-8 BOMなしで開いて、保存してください。

WordPress3.0へアップグレード(さくらインターネット)を参考にしてください。「ツール」に「ネットワーク」が出てくるまでは同じです。

「ツール」の「ネットワーク」をクリックして書かれている通りの作業をします。

・wp-contentの中にblog.dirのフォルダを作ります。
・wp-config.phpをFTPでダウンロードしてエディタで開きます。
「/home/******/www/*****/ にある wp-config.php ファイルの、/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */ という行よりに以下のコードを追加してください。」
と書かれている下の窓にあるコードをコピーして指定の場所へ貼り付けるのですがここで変更箇所があります。

[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 );
[/php]
このコードの中の2行目
[php]
define( ‘SUBDOMAIN_INSTALL’, true );
[/php]
を以下のように変更。
[php]
define( ‘SUBDOMAIN_INSTALL’, false );
[/php]

trueをfalseに変更します。

.htaccessも指示通りに変更してFTPでwp-config.phpと.htaccessをアップロードします。
再ログインします。
この時点ではまだサブディレクトリでマルチブログが作れる状態ではないので注意して下さい。
実際にはサブディレクトリを指定してブログを追加できますが、CSSが反映されない、ダッシュボードが見つからないエラーが出るなど不具合だらけです。

再度、「ツール」の「ネットワーク」をクリックします。
表示されているコードが変わっているはずです。
.htaccessのコードに注目!
私の場合は

[xml]
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]

# uploaded files
RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ – [L]
RewriteRule . index.php [L]
[/xml]
が以下のように変わっていました。
[xml]
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [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]
[/xml]

この変わった.htaccessのコードをコピーして前に貼りつけたコードに上書きして変更、保存してFTPで上書きアップロードします。

再ログインして「特権管理者」の「更新」をクリックして、「ネットワークの更新」のボタンを押下してネットワークを更新してください。←この部分はあとで追加しました。
これで自動アップグレードを使って更新したサイトもサブディレクトリでマルチブログが作れるはずです。

参考にエックスサーバーでの.htaccessの中は以下の通りです。さくらインターネットは1,2行目がありません。

[xml]
AddHandler x-httpd-php5 .php .phps

# BEGIN WordPress
<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [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]
</IfModule>

# END WordPress
[/xml]

この記事にコメントする

必須

7件のコメントがあります

  1. アップありがとうございます。
    私の場合は、マルチサイト化にする場合、誤ってサブドメインにしてしまいましたが、フォーラムを探してもこんなに細かく記載されておらず。困っていました。おかげ様でサブレィレクトリに変更できました。

  2. 魁文堂 能瀬明

    シン(エックスサーバー)さん
    コメントありがとうございました。
    私も色々試してみてこの方法が使えるのを発見しました。
    マルチサイトを楽しんでくださいね(^^)

  3. はじめまして。WPのマルチサイト化でサブディレクトリ形式にすることができず、
    困っている中、こちらのサイトを見つけました。

    手順通りやっているのですが、
    wp-config.phpを変更した後の.htaccessが確認できません。
    「ツール」に「ネットワーク」が現れません。

    そこで、
    能瀬明様の.htaccessの内容はみな共通だと思うのですが、
    変更後の.htaccessの内容を教えていただけないでしょうか?
    こちらのページに映っている.htaccessの画像は途中で右側が切れてしまっているように思うので。

    .htaccessを教えてもらい、それを貼りつけたいと思っています。

    大変お手数かけてしまいますが、
    お願いできたらうれしいです。

  4. すいません、

    何をしたら見えるようになったのかわかりませんが、
    .htaccessのコード全て見えるようになり、
    それをコピーしたところ、
    マルチサイト化ができました。

    まだテンプレートの変更が必要だったり、いろいろ疑問点が残っていますが、
    とりあえず、ブログの画面が表示できました。

    ありがとうございました。

    1. 魁文堂 能瀬明

      taakさん
      コメントありがとうございました。
      無事に解決されたようで良かったです。
      .htaccessが見えないって事はありえないのですが。。。

      以下、私のサーバーにある.htaccessを書いておきます。
      AddHandler x-httpd-php5 .php .phps

      # BEGIN WordPress

      RewriteEngine On
      RewriteBase /
      RewriteRule ^index\.php$ – [L]

      # uploaded files
      RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [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]

      # END WordPress